Welcome to Altis Life RPG

Register now to gain access to all of our features.
Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more.


Note that you can now sign-in with your Steam account.


This message will be removed once you have signed in.

  • Announcements

    • Rozo

      Donations   09/18/2016

      Hello,
        We've added a donation block on the right side. All of those donation goes directly to the developer of Altis Life mod ( currently BoGuu ). None of that money is used to maintain the forum. In the future we might add a donation button to support the forum, but for now we want to encourage the developer because they went through a lot. To discuss this topic - Here
    • Shakir Darwish

      IS YOUR SERVER BROKEN SINCE 1.64 UPDATE?   09/22/2016

      If your server is broken since 1.64 go check this link thanks. https://github.com/AsYetUntitled/Framework/issues/104
    • Rozo

      Sad Day   01/04/2017

      Good evening community of Altis Life RPG, Today was a sad day. We learned the hard way that one of the helper was using his status and visibility on the forum to do things i wouldn't imagine.  We were warned about this user in the beginning, we talked about his behavior and he said that they were things of the past. We were fooled.
      Unfortunately, he fooled other community members by selling stolen content and impersonating his role as a developer in another community. Here's a remember of one of the rules on our forum, No selling scripts, snippets, or services.   So if anyone come across someone who's selling his services, scripts or whatever, Report them. Especially if it's coming from an Helper, Mod, Admin. No one in the staff should ask for money, we already mention this when we reopened the forum and that rule is here to stay.

      We can't be sorry enough for what happen here, for any harm it as caused among other communities, for money that shouldn't been spent and we truly hope this doesn't happen again.

      As for the user in question, he is now banned from our forum and discord and we wish to never cross his path again.
        If there's anything we can do hit us on Discord or send a message to an admin.
      Thanks, Rozo.

Leaderboard


Popular Content

Showing most liked content since 03/29/2017 in Posts

  1. 16 likes
    Ok, where to start... Basically i’m releasing my AdminPanel that i have been working on for sometime now for all to use. I started this project mainly down to the fact of an old community i was a part of didn’t really fully understand how to use programs like Navicat and such and also the ability to manage the server on the go and a learning experience for myself. The github link is : https://github.com/Jason2605/AdminPanel I have a few screenshots of the AdminPanel on my flickr here (first few screenshots are not part of it): https:[email protected]/ The panel has a range of features which should make your server management a lot easier, a few of these are: RCON - This means the ability to kick/ban/message/stop/restart/unban people all from the panel API - Ability to get data from the panels API and use the data on your website, or in a discord bot etc. Ability to edit players database values - money/bank/cop/medic/admin level All setup from the panel itself - No config editing Further in-depth editing - single click license add/remove/blacklist/donator Ability to edit housing Ability to edit gangs Ability to edit vehicles Ability to search for players Full logging system - Everything is logged (apart from changes to staff accounts) Setting page - Easily change database and RCON connection info Profile page - Easily change staff user password Staff page - Easily change each staff accounts password/username/permissions Individual staff permissions - Easily manage each user to allow them to use each part of the panel separately Ability to add notes to players - Lets your admins see if players have committed a rule breaking offence with a warning system out of 3 (changes the colour of the note) Reimbursement logs - Easily add compensation logs, get your admins to add a log when they have given out comp to keep on top of where comp has been going Steam View - Ability to see users steam accounts from the panel More i can't remember! Any problems just submit an issue and ill do my best to get it sorted out, any features or further information you would like just let me know on the github, or on the discord attached to the github. Hope it comes in useful for people out there!
  2. 15 likes
    Working Scripts Archive easy access to all available scripts _____________________________________________________________________________________________________________________________________________ UI and Informational Intro Music Intro Music 2 Intro Text Intro Cam Intro Video Outro Script StatusBar Removing Default Statusbar Spawn Menu Redone Updated HUD IPAD Y Menu IPAD Y Menu 2 AI Based Scripts Dynamic Airdrop Improvements & Basic Features Custom Spawn Loadouts for Civilians Seat Belts Patdown Player + Seize Objects Realistic Towing Ear Plugs Rubber Bullets Realistic CPR Kit Actions Menu Tag System Speed Bomb Zip Ties Police Backup Jaws of Life Realistic Tazer Hand Gestures Buyable Loadouts Backpack Custom Capacity Marijuana Effects Gag Action Fastrope Auto Save Adding Smoke Effect to Processing Placeable Objects for Police Invisible Backpacks for police/med Anti VDM Block Changing Names Cops can enter locked vehicles Warner's Barriers Configurable Jail Time Adding police radar GPS System Car Alarm Boat Rental Civilian Passports Police Gate Opening Hotkey Adding Smoke Trails to Cesna Suicide Vest Automatic Messages Systems and Complex Features Zipties Revised [Fully Working, With Gag and Blindfolds] Vehicle Insurance RYANTTS DYNAMIC MARKET SYSTEM OPFOR 4.4 Advanced Banking System, With Pins MrKraken's Gas Station Robbery Script Bounty Hunting Framework [Dialog, DB, Player Interaction] Altis Central Bank - Second Fed Purge [Server Event] Crafting System Slot Machines Bus Transportation SQL Based Smartphone Physical Cellphone Gang Capturable Areas Tutorials Basic Coding Tutorial Moving the Federal Reserve Task force Radio Black screen when not in channel ETC Separate Police/Civ Cash & Bank Account Gang Name Spawns Ruby Mine Custom Medic & Cop Skins Adding Licenses 4.4 Civilian Whitelisting Installing Task Force Radio (Addon/Mod) Mining with Shift+C Custom Paychecks Official Paid Scripts Maverick Applications Let me know if i missed anything
  3. 10 likes
    Warner's Barrier - Version 3 Updated October 4th 2016 This may work on version 3.x, I can only confirm it works with 4.x. If you get it working with 3.x reply to this post and I will try to get it moved to universal. Thanks :] Features Place 6 unique objects used to control traffic or pedestrians. Seen in real time where your barrier will be placed. Cones and barriers with working caution lights. Remove barriers with ease. Ability to white list for police and medic ranks. Simple Install Install for Scroll Wheel Download the script from the link below. Drag the script into the "Altis_Life.Altis\core\actions" folder. Ensure the script is named fn_barrier and the file extension is .sqf Open Functions.hpp in the Altis_Life.Altis folder. Find the class Actions section and add class barrier {}; to the end of the list. IMAGE Open initPlayerLocal.sqf in the Altis_Life.Altis folder. At the very bottom add BarrierOpen = 0;. Open fn_setupActions.sqf in the Altis_Life.Altis\core folder. Add a new case for west and add the following code. player addaction ["Barriers",life_fnc_barrier,[""],0,false,true,"","vehicle player == player and BarrierOpen == 0"]; IMAGE (Optional) If you want medics to have access to the menu add a case for Independent too. (OPTIONAL) Space Bar to Drop Barrier Open fn_keyHandler.sqf in the "Altis_Life.Altis\core\functions" folder. Inside case 57 add the following code. detach placeable; placeable setVectorUP (surfaceNormal [(getPosATL placeable) select 0,(getPosATL placeable) select 1]); IMAGE Save your fn_keyHandler.sqf before you add the above code, ArmA has been known to have stuff break for no reason. Video Demonstration CLICK ME Download Download - Version 3
  4. 9 likes
    ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════ Difficulty: Hard Published By: Snipes Murphy Version: 4.x Credit: DiabolicaTrix ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════ All files are available here: https://github.com/DiabolicaTrix/Life-Banking-System/releases Navigate to the core folder, and drag the banking folder directly into it (these are single files, no files should be replaced) In the session folder, open the file fn_requestReceived.sqf and copy the contents of the file. Then go to your file of the same name, and copy the code just after initializing the CASH, BANK, etc. variables. Open the file fn_updatePartial.sqf, and copy the contents. Paste the code just after the "box 7: ..." In the shop folder, open fn_atmMenu.sqf, and copy the one line. Then replace the contents of your file with the same name by this single line. At the core root, open the configuration.sqf file, and in your file of the same name, copy the rows right after the life_marker In the init.sqf, copy the contents of the file, and in your file, paste the code between the initialization of the "sides" (initCiv, initCop, etc.) and the initialization of the "restrained" In the dialog folder, drag the banking folder directly. In the function, paste the files directly, and replace existing files. Copy the atm.hpp file directly to the dialog folder. Open the MasterHandler.hpp file and copy the contents. Add it to the very end of the file. Drag the sounds folder directly Drag the textures folder directly Drag the Config_Banking.hpp file directly Copy the single line of the Config_Master.hpp file and add it to the end of the Config_Master.hpp file. Copy the contents of description.ext, and add it to the end of CfgSounds In Functions.hpp, add the contents of the file after Vehicle. In the stringtable.xml, add the content to the end of the file, just before the closing tag of Project (</ Project>) In your life_server, navigate to the Mysql folder, and open the file fn_queryRequest.sqf, add "banking_pin" after each query, just after playtime. An example is provided in the file in question. Then, in the same file, copy the rest of the file and paste it before the switch. Copy the contents of fn_updatePartial.sqf, and add the right after box 7. In your database, add a new field in the player table, the field must be an int, with a length of 4, and be non-null (same features as the cash field).
  5. 8 likes
    ============================================================================================================ Difficulty: Easy Tutorial By: Hyper4u ============================================================================================================ Open description.ext and under CfgSounds add save and then open fn_spawnConfirm go to Under add Then you put your sound in root -> sounds and name it Welcome and remember it has to be an .ogg AND DONT FORGET TO LEAVE A LIKE! THANKS
  6. 7 likes
    Adaptive Debit Cards I've looked around for a debit card script previously, and either couldn't find one, it wasn't updated for the latest framework, or it was incomplete. -- So I decided to give it a go myself. If you haven't seen or used Debit Cards on Altis Life before, they essentially make the purchase of items much easier and faster by taking money straight from a player's bank account, instead of their on-hand cash. From what I have also seen in the past, Debit Cards were forced upon the player, leading to problems such as Rebels not being able to rob people for their money, since it was safe and sound in their bank -- Which can easily ruin an economy. I've tried to help server owners out here by adding a few configuration options, including Taxing, setting a Tax amount, charging a custom amount for a Debit Card along with the disabling of debit cards in certain shops. This way, the player can decide weather or not to buy the card, and if they do, they will be charged extra for purchasing items with a Debit Card. How Debit Cards work: If the player is attempting to buy something from a shop, and they have enough money on-hand, the shop will take their cash. If they don't have that money on their person, but they have it in their bank account, that money is taken instead and they will also be charged extra in Tax (if it is enabled on the server). Cash on hand takes priority before Bank balance when buying items. If a player is attempting to sell an item and they have a Debit Card, the money made from the sale will go to their bank account. If they have no Debit Card it will be added to their on-hand cash. DISCLAIMER: These scripts were made on and tested on the most recent Altis Life Framework(v5.0.0) & 4.4r3. They may not work if you are attempting to use them on anything lower. If you are using Altis Life 4.4r3 please make sure your fn_mresArray.sqf has been updated to this: https://github.com/AsYetUntitled/Framework/commit/db66e545ef02faec2a2e9fd152eb5260b3deab8a ADDONS/OPTIONAL UPDATES Once you have finished this tutorial, feel free to install any of the updates below. They are 100% optional. (This list is a work in progress) Virtual Item: Tutorial Altis_Life.Altis 1. Download the file attached to this thread. 2. In Altis_Life.Altis\functions.hpp create the following class inside Life_Client_Core: class Debit { file = "core\debit"; class buyClothesDebit {}; class vehicleShopBuyDebit {}; class virt_buyDebit {}; class virt_sellDebit {}; class weaponShopBuySellDebit {}; class debitCheck {}; class buyDebit {}; }; 3. Open Config_Master.hpp, found in Altis_Life.Altis\config and add the following inside Life_Settings: /* Debit Card Configuration */ debit_tax = true; //Tax a player when they have used a Debit card to purchase something? - This is mainly a money sink in case everyone on your server owns a debit card, as they'll never have money on their person (so they can't be robbed) if they do. debit_taxAmount = 0.15; // Tax the player pays when purchasing with a debit card. Tax = Price * debit_taxAmount. debit_tax must be true. Eg. - If an item is $45,000 and your tax is set to 0.15, amount paid after tax will be $51,750. (total tax paid $6750.) debit_price = 75000; // Price of purchasing a debit card from the bank. debit_weapons = true; // Allows the use of debit cards when purchasing/selling weapons. debit_clothing = true; // Allows the use of debit cards when purchasing/selling clothing. debit_vItems = true; // Allows the use of Debit Cards when purchasing/selling virtual items. debit_vehicles = true; // Allows the use of Debit Cards when purchasing/renting/selling vehicles. 4. In Altis_Life.Altis\core open your configuration.sqf and add the following to Life Variables: IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS life_has_debit = false; 5. Move the debit folder for your version of Altis Life found in the .rar you (should have) downloaded from step 1 in to Altis_Life.Altis\core 6. Navigate to Altis_Life.Altis\dialog and open the following files: bank.hpp Find the following: class CloseButtonKey: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Close"; onButtonClick = "closeDialog 0;"; x = 0.35; y = 0.812; w = (6.25 / 40); h = (1 / 25); }; class MainBackground: Life_RscText { colorBackground[] = {0, 0, 0, 0.7}; idc = -1; x = 0.35; y = 0.2 + (11 / 250); w = 0.3; h = 0.652 - (22 / 250); }; Change to: class CloseButtonKey: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Close"; onButtonClick = "closeDialog 0;"; x = 0.438125 * safezoneW + safezoneX; y = 0.7024 * safezoneH + safezoneY; w = 0.0644531 * safezoneW; h = 0.022 * safezoneH; }; class MainBackground: Life_RscText { colorBackground[] = {0, 0, 0, 0.7}; idc = -1; x = 0.438125 * safezoneW + safezoneX; y = 0.3592 * safezoneH + safezoneY; w = 0.12375 * safezoneW; h = 0.341 * safezoneH; }; Also, add to class controls: class buyDebit: Life_RscButtonMenu { idc = 57623; onButtonClick = "[] call life_fnc_buyDebit"; 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}; text = "$STR_Debit_PurchaseDebit"; x = 0.444312 * safezoneW + safezoneX; y = 0.6672 * safezoneH + safezoneY; w = 0.113437 * safezoneW; h = 0.022 * safezoneH; }; clothing.hpp Find: class BuyButtonKey: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Buy"; onButtonClick = "[] call life_fnc_buyClothes;"; x = 0.0822359 * safezoneW + safezoneX; y = 0.489992 * safezoneH + safezoneY; w = (6.25 / 40); h = (1 / 25); }; Change to: class BuyButtonKey: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Buy"; onButtonClick = "[0] call life_fnc_debitCheck;"; x = 0.0822359 * safezoneW + safezoneX; y = 0.489992 * safezoneH + safezoneY; w = (6.25 / 40); h = (1 / 25); }; shop_items.hpp Find: class ButtonAddG: Life_RscButtonMenu { idc = -1; text = "$STR_VS_BuyItem"; 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 = "[] spawn life_fnc_virt_buy;"; x = 0.12 + (0.35 / 2) - ((6.25 / 40) / 2); y = 0.70; w = (6.25 / 40); h = (1 / 25); }; class ButtonRemoveG: Life_RscButtonMenu { idc = -1; text = "$STR_VS_SellItem"; 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 life_fnc_virt_sell"; x = 0.53 + (0.35 / 2) - ((6.25 / 40) / 2); y = 0.70; w = (6.25 / 40); h = (1 / 25); }; Change to: class ButtonAddG: Life_RscButtonMenu { idc = -1; text = "$STR_VS_BuyItem"; 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 = "[2] call life_fnc_debitCheck"; x = 0.12 + (0.35 / 2) - ((6.25 / 40) / 2); y = 0.70; w = (6.25 / 40); h = (1 / 25); }; class ButtonRemoveG: Life_RscButtonMenu { idc = -1; text = "$STR_VS_SellItem"; 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 = "[4] call life_fnc_debitCheck"; x = 0.53 + (0.35 / 2) - ((6.25 / 40) / 2); y = 0.70; w = (6.25 / 40); h = (1 / 25); }; shops.hpp Find: class ButtonBuySell: Life_RscButtonMenu { idc = 38405; text = "$STR_Global_Buy"; onButtonClick = "[] spawn life_fnc_weaponShopBuySell; true"; x = 0.1; y = 0.8 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; Change to: class ButtonBuySell: Life_RscButtonMenu { idc = 38405; text = "$STR_Global_Buy"; onButtonClick = "[1] call life_fnc_debitCheck;"; x = 0.1; y = 0.8 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; vehicleShop.hpp AND vehicleShop3D.hpp Find: class RentCar : Life_RscButtonMenu { idc = -1; text = "$STR_Global_RentVeh"; onButtonClick = "[false] spawn life_fnc_vehicleShopBuy;"; x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; class BuyCar : life_RscButtonMenu { idc = 2309; text = "$STR_Global_Buy"; onButtonClick = "[true] spawn life_fnc_vehicleShopBuy;"; x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; Change to: class RentCar : Life_RscButtonMenu { idc = -1; text = "$STR_Global_RentVeh"; onButtonClick = "[5] call life_fnc_debitCheck;"; x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; class BuyCar : life_RscButtonMenu { idc = 2309; text = "$STR_Global_Buy"; onButtonClick = "[3] call life_fnc_debitCheck;"; x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; 7. Go to Altis_Life.Altis\core\session and make changes to the following files -- IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS fn_requestReceived.sqf - Find "switch (playerSide) do {" and add the following to it's respective class: For Altis Life 5.0.0: For Altis Life 4.4r3: It should look like this (5.0.0): case west: { life_has_debit = _this select 12; CONST(life_coplevel,(_this select 7)); CONST(life_medicLevel,0); life_blacklisted = _this select 9; if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then { life_hunger = ((_this select 10) select 0); life_thirst = ((_this select 10) select 1); player setDamage ((_this select 10) select 2); }; }; fn_updatePartial.sqf - Add the following case below case 7. case 8: { _packet set[2,life_has_debit]; }; fn_updateRequest.sqf - Change the playerSide switch to: switch (playerSide) do { case civilian: { _packet pushBack life_is_arrested; _packet pushBack _alive; _packet pushBack _position; _packet pushBack life_has_debit; }; case west: { _packet pushBack life_has_debit; }; case independent: { _packet pushBack life_has_debit; }; }; 8. Open your stringtable.xml and create the following package: 9. Open cfgRemoteExec.hpp and add the following Server Only Function: IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS F(TON_fnc_debitBought,SERVER) Life_Server IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS SECTION 1. Open life_server\config.cpp and add the following class to class Systems: class debitBought {}; 2. Move fn_debitBought.sqf from your version of Altis Life you (should have) have downloaded from step 1 in to life_server\functions\systems 3. Go to life_server\Functions\MySQL and make the changes to the following files: fn_queryRequest.sqf For Altis Life 5.0.0: For Altis Life 4.4r3: fn_updatePartial.sqf Find: case 7: { _array = [_this,2,[],[[]]] call BIS_fnc_param; [_uid,_side,_array,0] call TON_fnc_keyManagement; }; Add under: For Altis Life 5.0.0: case 8: { _query = format ["UPDATE players SET debit='1' WHERE pid='%1'",_uid]; }; For Altis Life 4.4r3: case 8: { _query = format ["UPDATE players SET debit='1' WHERE playerid='%1'",_uid]; }; fn_updateRequest.sqf Find: private ["_uid","_side","_cash","_bank","_licenses","_gear","_stats","_name","_alive","_position","_query","_thread"]; _uid = [_this,0,"",[""]] call BIS_fnc_param; _name = [_this,1,"",[""]] call BIS_fnc_param; _side = [_this,2,sideUnknown,[civilian]] call BIS_fnc_param; _cash = [_this,3,0,[0]] call BIS_fnc_param; _bank = [_this,4,5000,[0]] call BIS_fnc_param; _licenses = [_this,5,[],[[]]] call BIS_fnc_param; _gear = [_this,6,[],[[]]] call BIS_fnc_param; _stats = [_this,7,[100,100],[[]]] call BIS_fnc_param; _alive = [_this,9,false,[true]] call BIS_fnc_param; _position = [_this,10,[],[[]]] call BIS_fnc_param; Add to the Private array & below _position = [_this,10,[],[[]]] call BIS_fnc_param; (Make sure you add it, do not overwrite what's currently there) private ["_debitCiv","_debit"]; _debitCiv = [_this,11,false,[true]] call BIS_fnc_param; _debit = [_this,8,false,[true]] call BIS_fnc_param; For Altis Life 5.0.0: For Altis Life 4.4r3: Database Changes IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS Execute the following on your database: ALTER TABLE `players` ADD (`debit` int(1) NOT NULL DEFAULT '0'); Battleye Add the following to your remoteexec.txt in your Battleye working directory: !TON_fnc_debitBought All done! All you need to do now is configure the settings to your preference and you should be good to go! I will be revising the scripts on this thread at some point, but at the moment I just don't have the time to do it. I also plan on implementing addons in the future which work alongside debit cards, so keep a look out! If you run in to a problem, don't hesitate to PM me or post on the thread. Debit Cards.rar
  7. 7 likes
    Hi All I've put together a list of what i believe are the most common questions and answers to peoples problems when scripting Altis Life, This should help people find answers to questions more quickly and people are more then welcome to comment if i have left something out with a link and ill update the list. Ill update as i go and hope this helps someone. The aim is that all scripts ect will be working so please let me know if something is broken, Thanks. [Admin please feel free to sticky this if you think it could be off some help ] ========= Mission Editing ========= My mission won't launch after i map edit? Click Here How do i disable fog? Click Here Can i allow players to spawn at there gang base? Click Here How to change open shop objects? Click Here How do i add a radiation zone? Click Here How do i move the federal reserve? Click Here How do i add a second bank to altis? Click Here ========= Script Help ========= How do i change my taser weapon? Click Here How do i add zip ties? Click Here How do i add a welcome side script? Click Here How do i add a suicide vest? Click Here How do i add a push vehicle script? Click Here How do i add anti VDM [4.5]? Click Here How do i add peaceable objects for police? Click Here How do i add effects for marijuana? Click Here How do i add the ability for people to rob a gas station? Click Here How do i add a dynamic market? Click Here How do i install task force radio on my server? Click Here How do i add a bus transportation system? Click Here How to add a new status bar? Click Here How do i add buy-able load outs? Click Here How do i add meth drug? Click Here How do i add a intro cam? Click Here How do i add a outro cam? Click Here How do i add a cop pat down script? Click Here ========= Config Help ========= How do i allow players to save weapons? Click Here Why are licences being removed after i kill someone? Click Here How do i turn off spyglass? Click Here How do i rename a shop? Click Here How do i add a custom difficulty? [Template Included] Click Here How to find a colour code? Click Here How do i change the carry weight of a bag? Click Here How do i add BEC and server restarts? Click Here How do i add license's? Click Here How do i remove snakes from the server? Click Here How do i add more cop ranks? Click Here How do i add car lock and unlock sounds? Click Here How do i increase the animal population around the hunting zone ? Click Here How do i remove public cops? Click Here How do i change the repair kit timing? Click Here How do i change player start cash? Click Here How do i change player starting equipment? Click Here How do i make tool kits infinite? Click Here Key Handler Refrence Click Here ========= Texture Help ========= Where can i find some new textures? Click Here How do i add new car textures? Click Here How do i add vehicle skins? Click Here How do i add different uniforms for cop levels? Click Here or Click Here Cop and Medic skin tutorial Click Here More car textures Click Here ========= Altis Life Server Files ========= Altis Life 4.0 Download Click Here - Altis Life 4.0 Setup Click Here Altis Life 4.4 Download Click Here - Altis Life 4.4 Setup Click Here ========= Other Useful Help ========= Admin Debug Commands Click Here Arma 3 assets list Click Here Auto server build update and backup Click Here
  8. 6 likes
    How to Stop the Gang Bank Duplication Exploit Author: CptGooch Author Website: www.abeloth.com Short description: I got tired of seeing so many servers and even the framework with this exploit. Downloads: fn_gangDeposit.sqf & fn_gangWithdraw.sqf Installation Steps: Replace your fn_gangWithdraw.sqf and fn_gangDeposit.sqf found in dialog\function\ with the downloads provided Add the following to your core/configuration.sqf life_gang_bank_time = 0; Open your stringtable.xml and search (crtl+f) for STR_ATM_DepositInUseG Update the original text to <Original>Reconnecting to bank server. Please wait 10 seconds to deposit into your gang's bank account.</Original> Now find STR_ATM_WithdrawInUseG and update the original text to <Original>Reconnecting to bank server. Please wait 10 seconds to withdraw from your gang's bank account.</Original> Next, open up \dialog\bank.hpp Change your GangWithdraw button action to onButtonClick = "[] spawn {sleep (random 0.5);[] call life_fnc_gangWithdraw};"; And change your GangDeposit action to onButtonClick = "[] spawn {sleep (random 0.5);[] call life_fnc_gangDeposit};"; All done! No more Gang Bank Duping for those #%!#*^.
  9. 6 likes
    SOURCE: http://www.armaholic.com/page.php?id=20465 Fockers Arma3 Scripting Guide Author: Mikie boy Author Website: http://fockers.moonfruit.com Version: 3.0 Short description: This is an old but useful guide from 2013. Chapter 1, 2 and 3 of Fockers Arma3 Scripting Guide Download Link: Fockers_Arma_Scripting_guide_v30.7z Features: The first chapter covers the basics of: Setting up a file, showscripterrors, and window mode Variables, assignment, initialization, and variable types. Init.sqf, interactions between the game world and the scripts. Alignment of code, bracket usage and setting out code. If/else statement, nested if/else statements. While, and both for-loops types. Commands - player, waituntil, getpos, createvehicle, createunit, hint, format, sleep and a few other bits. And a lot of reference on using BIS forums and the Wiki. The second chapter covers the basics of: Part 1: Basic Arrays Selecting elements Subtracting Addition forEach command Part 2: Basic Functions Local and global call Spawn Part 3: Making a basic Patrol function. Few other commands have been thrown in The third chapter covers the basics of: Part 1: Eventhandlers adding removing use of scope and exitwith command example usage and creation of eject and mine functions Part 2: Get and set Variable handle variables Create a driving licence system using eventhandlers and get/set variables to control access to vehicles Few other commands have been thrown in.
  10. 5 likes
    Hello everyone, Thought it may be time to write a proper tutorial for my zipties. Location of changes: Mission.Map (Eg. AltisLife.Altis or TanoaLife.Tanoa) Difficulty: Medium Github: https://github.com/Wackbatt/Altis-Life-Zipties 1. Download the files from the github listed above. 2. Navigate to the core folder and drag the zipties folder into it. 3. Go back to your mission root and open functions.hpp and add the following to the very bottom: class zipties { tag = "zipties"; class Functions { file = "core\zipties"; class zip_blindfold {}; class zip_blindfoldAction {}; class zip_gagPlayer {}; class zip_gagAction {}; class zip_interaction {}; class zip_patDown {}; class zip_patDownAction {}; class zip_tie {}; class zip_tieAction {}; class zip_untie {}; class zip_untieFix {}; }; }; 4. Open cfgRemoteExec.hpp and add the following under the client section: F(zipties_fnc_zip_tie,CLIENT) F(zipties_fnc_zip_gagplayer,CLIENT) F(zipties_fnc_zip_blindfold,CLIENT) F(zipties_fnc_zip_patdown,CLIENT) F(zipties_fnc_zip_untieFix,CLIENT) 5. Open stringtable.xml and add the following package at the bottom <Package name="zipties"> <Key ID="STR_NOTF_ziptied"> <Original>%1 was ziptied by someone.</Original> <German>%1 wurde gefesselt.</German> </Key> <Key ID="STR_NOTF_unzipteed"> <Original>%1 was cut loose.</Original> <German>%1 wurde befreit.</German> </Key> <Key ID="STR_ExcessiveTied"> <Original>You have been released automatically for excessive restrainment time</Original> <German>Du wurdest automatisch frei gelassen.</German> </Key> <Key ID="STR_tied"> <Original>You have been restrained by someone.</Original> <German>Du wurdest gefesselt.</German> </Key> <Key ID="STR_Ziptie"> <Original>Ziptie</Original> <German>Fesseln</German> </Key> <Key ID="STR_gag"> <Original>Gag</Original> <German>Knebel</German> </Key> <Key ID="STR_blindfold"> <Original>Blindfold</Original> <German>Augenbinde</German> </Key> </Package> 6. Open description.ext and add the following: class ziptie { name = "ziptie"; sound[] = {"\sounds\ziptie.ogg", 1.0, 1}; titles[] = {}; }; class gag { name = "gag"; sound[] = {"\sounds\gag.ogg", 1.0, 1}; titles[] = {}; }; 6. Add the sounds and icons from the github to the appropriate folders. 7. Go to the config folder and open Config_master.hpp and add the following in the life settings section: ziptie_need_rebel = false; 8. Open Config_vItems.hpp and add the following: class ziptie { variable = "ziptie"; displayName = "STR_Ziptie"; weight = 6; buyPrice = 5000; sellPrice = 1200; illegal = true; edible = -1; icon = "icons\ziptie.paa"; }; class gag { variable = "gag"; displayName = "STR_gag"; weight = 7; buyPrice = 3000; sellPrice = 1000; illegal = true; edible = -1; icon = "icons\gag.paa"; }; class blindfold { variable = "blindfold"; displayName = "STR_blindfold"; weight = 7; buyPrice = 3500; sellPrice = 1200; illegal = true; edible = -1; icon = "icons\blindfold.paa"; }; 9. Open core\actions and replace the 3 files with the files from the git repo. 10. Goto core\functions and open actionkeyhandler and find if (playerSide isEqualTo west && {player getVariable ["isEscorting",false]}) exitWith { [] call life_fnc_copInteractionMenu; }; and add the following underneath: if (playerSide isEqualTo civilian && {player getVariable ["isEscorting",false]}) exitWith { [] call zipties_fnc_zip_interaction; }; and in the same file find if ((_curObject getVariable ["restrained",false]) && !dialog && playerSide isEqualTo west) then { [_curObject] call life_fnc_copInteractionMenu; }; and add the following underneath: if ((_curObject getVariable ["ziptied",true]) && !dialog) then { [_curObject] call zipties_fnc_zip_interaction; }; 11. Open keyhandler in the same folder and replace line 24 to 26 with the following: if ((_code in (actionKeys "GetOver") || _code in (actionKeys "salute") || _code in (actionKeys "SitDown") || _code in (actionKeys "Throw") || _code in (actionKeys "GetIn") || _code in (actionKeys "GetOut") || _code in (actionKeys "Fire") || _code in (actionKeys "ReloadMagazine") || _code in [16,18]) && ((player getVariable ["restrained",false]) || (player getVariable ["playerSurrender",false]) || (player getVariable ["ziptied",false]) || life_isknocked || life_istazed)) exitWith { true; }; 12. Add the following to the if statement for case 21: !(player getVariable ["ziptied",false]) and replace case 19 with the following: case 19: { if (_shift) then {_handled = true;}; if (_shift && playerSide isEqualTo west && {!isNull cursorObject} && {cursorObject isKindOf "Man"} && {(isPlayer cursorObject)} && {(side cursorObject in [civilian,independent])} && {alive cursorObject} && {cursorObject distance player < 3.5} && {!(cursorObject getVariable "Escorting")} && {!(cursorObject getVariable "restrained")} && {speed cursorObject < 1}) then { [] call life_fnc_restrainAction; } else { [] call zipties_fnc_zip_tieAction; }; }; 13. Replace the entirety of fn_pullOutVeh.sqf with the file from the github. 14. Open core\medical and open onplayerkilled and add the following underneath the set variables: [_unit] call ziptie_fnc_zip_untieFix; 15. Open core\vehicle and open vinteractionmenu and find if (playerSide isEqualTo west) then { and add the following above it: _Btn4 ctrlSetText localize "STR_vInAct_PullOut"; _Btn4 buttonSetAction "[life_vInact_curTarget] spawn life_fnc_pulloutAction; closeDialog 0;"; if (crew _curTarget isEqualTo []) then {_Btn4 ctrlEnable false;}; 16. Open core\init.sqf and find player setVariable ["restrained",false,true]; player setVariable ["Escorting",false,true]; player setVariable ["transporting",false,true]; player setVariable ["playerSurrender",false,true]; and add the following underneath: player setVariable ["ziptied",false,true]; player setVariable ["blindfolded",false,true]; player setVariable ["gagged",false,true]; 17. Repack your pbo and relaunch your server. Additional Notes: It is up to you to include the 50+ changes to other files in the framework to prevent ziptied people from performing certain actions like gathering, mining etc. I eventually will be making this more stream lined so that these changes are not needed so make sure you keep your files up to date. Leave any comments below regarding changes/updates and fixes, feel free to fork the repo and commit any changes you feel need to be made.
  11. 5 likes
    Everything in one service Available from everywhere ArmA Remote Admin's web interface is available on any device. Remotely access your server from your phone, edit users and administrate on the go. Scheduler - Daily routines for your gameservers Use ARA's build in scheduler to create daily routines for your gameservers. Restart your servers on fixed times, send messages, run applications and more. User Account Validation Filter out unwanted accounts by playtime, owned games and VAC bans to prevent cheaters from joining your server. Reserved Slots Support Create reserved slots for specific players with ease RCON access via web interface View ingame messages, send messages, kick/ban users, load different missions and more. User accounts Allow other users with valid Maverick Applications accounts to access certain features of your gameservers such as restarting, scheduler editing, rcon access and more allowing you to easily configure accounts for moderators and other administrators. System Diagnostics View server diagnostics such as server performance, CPU usage, RAM usage and other diagnostics live. Remote Server Control Start/Stop/Restart your server from everywhere by clicking a button Whitelists Add a whitelist to your server and manage it with ease. System Failure Handling Be notified when your server/gameserver crashes or becomes unavailable and have it automatically restarted to ensure uptimes. WebLogs WebLogs provides an overview over everything that is happening to your server. From RCon messages, to bans, kicks and edits of your scheduler, everything is logged. Offline Solution If the master server is not reachable, offline dumped data will be used to keep automatic server restarts and other functionalities running. Click here to visit the website
  12. 5 likes
    For those that wish to change their buttons for surrendering, restraining etc, here is a semi comprehensive list. ESC = 1 F1 = 59 F2 = 60 F3 = 61 F4 = 62 F5 = 63 F6 = 64 F7 = 65 F8 = 66 F9 = 67 F10 = 68 F11 = 87 F12 = 88 PRINT = 183 SCROLL = 70 PAUSE = 197 ^ = 41 1 = 2 2 = 3 3 = 4 4 = 5 5 = 6 6 = 7 7 = 8 8 = 9 9 = 10 0 = 11 ß = 12 ´ = 13 # = 43 < = 86 , = 51 . = 52 - = 53 TAB = 15 ENTER = 28 DELETE = 211 BACKSPACE = 14 INSERT = 210 END = 207 PAGEUP = 201 PAGEDOWN = 209 CAPS = 58 A = 30 B = 48 C = 46 D = 32 E = 18 F = 33 G = 34 H = 35 I = 23 J = 36 K = 37 L = 38 M = 50 N = 49 O = 24 P = 25 Q = 16 U = 22 R = 19 S = 31 T = 20 V = 47 W = 17 X = 45 Y = 44 Z = 21 SHIFTL = 42 SHIFTR = 54 UP = 200 DOWN = 208 LEFT = 203 RIGHT = 205 NUM_0 = 82 NUM_1 = 79 NUM_2 = 80 NUM_3 = 81 NUM_4 = 75 NUM_5 = 76 NUM_6 = 77 NUM_7 = 71 NUM_8 = 72 NUM_9 = 73 NUM_+ = 78 NUM = 69 NUM_/ = 181 NUM_* = 55 NUM_- = 74 NUM_, = 83 NUM_ENTER = 156 STRGL = 29 STRGR = 157 WINL = 220 WINR = 219 ALT = 56 SPACE = 57 ALTGR = 184
  13. 4 likes
    Vehicle Indicators Using Maverick Application's Indicator script is a nice feature. I decide to replicate it. Although its not the best. Its free. I'm not using this in my server anymore so thought i would release it here. Extract folder "indicators" inside the indicators.rar to a folder called "scripts" in your mission file. Open "Init.sqf" in your mission main directory and add "[] execVM "scripts\indicators\indicatorInit.sqf";". Open "Functions.hpp" and add the code below: class ALRPG_INDICATORSYSTEM { file = "source\game\content\indicators"; class leftIndicatorLight {}; class rightIndicatorLight {}; class startIndicatorLeft {}; class startIndicatorRight {}; }; Open "cfgRemoteExec.hpp" and add the code below: F(life_fnc_leftIndicatorLight,ANYONE) F(life_fnc_rightIndicatorLight,ANYONE) Open "description.ext" and add the code below class sounds: class blinkerclick { name = "blinkerclick"; sound[] = {"\source\sfx\vehicle\blinkerclick_sfx.ogg", 1.0, 1}; titles[] = {}; }; class blinkerstart { name = "blinkerstart"; sound[] = {"\source\sfx\vehicle\blinkerstart_sfx.ogg", 1.0, 1}; titles[] = {}; }; You will have to change specific file pathing yourself i left it there as an anti-leech for noobs, its pretty self explanatory if you cannot do it then please shut down your server to save everyone some trouble. If you're willing to learn go BI Wiki, everything is there. sounds.rar
  14. 4 likes
  15. 3 likes
    ********************************************************************************************* Hey Guys, today i want to share my trunk with all of u and how to install it ********************************************************************************************* to start things of here are some information about it: The trunk has 2 new buttons one to take all (as much as possible) one to store all ( as much as possible) it has ha new layout, and yea, it is not the best but yea go with it, design is not my strongest It will look like this: ********************************************************************************************* Tested in versions: 5.0.0 4.4.1 ********************************************************************************************* first we need to Edit the menu so go to dialog/trunk.hpp and replace everythin with my code that done we go to our functions.hpp / functions.h in the root directory nad add unter class vehicle the following: class vehTakeAllItem {}; class vehStoreAllItem {}; so it should look like this next of we go in the directory core/vehicle and create 2 new sqf files the first one: fn_vehStoreAllItem.sqf: and fn_vehTakeAllItem.sqf: so with this done it should work, if i forgot something please let me know below
  16. 3 likes
    Author: Black Lagoon Original Video: Youtube (but this video not working on 5.0 it is old video) Hi, 1. Download this files, Download files from mega 2. Extract all files to your mission file. 3. Go into your "Functions.hpp" then add this codes after class Master_Directory 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 {}; }; Like this, class Master_Directory { file = "core"; class initCiv {}; class initCop {}; class initMedic {}; class setupActions {}; class setupEVH {}; class survival {}; class welcomeNotification {}; }; 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 {}; }; 4. And add this code to into your class Functions. class randomRound {}; 5. Then go into your "dialogs\MasterHandler.hpp" and add this code to end of the file. #include "common_EditorWrapper.hpp" #include "market.hpp" 6. Go into your "dialogs\player_inv.hpp" and add this code after the class ButtonSyncData. class ButtonMarket : Life_RscButtonMenu { idc = 3025; text = "Market"; onButtonClick = "[] spawn life_fnc_openMarketView;"; x = 0.26 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH)); y = 0.805; w = (6.25 / 40); h = (1 / 25); }; Like this, 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); }; class ButtonMarket : Life_RscButtonMenu { idc = 3025; text = "Market"; onButtonClick = "[] spawn life_fnc_openMarketView;"; x = 0.26 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH)); y = 0.805; w = (6.25 / 40); h = (1 / 25); }; 7. Go into your "init.sqf" at the main directory and add this code after "player enableFatigue false;" 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"; }; Finally, you can edit item prices from fn_marketConfiguration.sqf and you can edit "News: item increased-decreased." broadcast from fn_marketChange.sqf". Sorry for my english
  17. 3 likes
    ArmA Remote Admin is now free! Click here to find out more >
  18. 3 likes
    I highly recommend Maverick! Not just for their outstanding ArmA and Rust Services, but their support is second to none. They really care about their clients.
  19. 3 likes
    Managed to fix the .FSM error, /*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, Server-Side Cleanup">*/ /*%FSM<HEAD>*/ /* item0[] = {"init",0,250,-62.908096,-391.651611,27.091887,-341.651672,0.000000,"init"}; item1[] = {"true",8,218,-62.976639,-315.185364,27.023363,-265.185364,0.000000,"true"}; item2[] = {"Share__Work_load",2,250,-64.183350,-224.681931,25.816656,-174.681931,0.000000,"Share " \n "Work-load"}; item3[] = {"Continue__",4,218,-220.591476,74.216980,-130.591476,124.216980,0.000000,"" \n "" \n "Continue" \n "" \n ""}; item4[] = {"Time_Check",4,218,-219.425827,-133.310532,-129.425964,-83.310455,0.000000,"Time Check"}; item5[] = {"Delete_Dead_Cars",2,4346,-220.186951,-29.248400,-130.187195,20.751413,0.000000,"Delete" \n "Dead" \n "Cars"}; item6[] = {"",7,210,-312.538239,95.295059,-304.538239,103.295059,0.000000,""}; item7[] = {"",7,210,-312.798218,-204.081940,-304.798218,-196.081940,0.000000,""}; item8[] = {"End_Cleanup_",1,250,-64.828239,87.581070,25.171984,137.581238,0.000000,"" \n "End Cleanup" \n ""}; item9[] = {"Check_for_HC_",4,218,-65.059021,-30.047342,24.941008,19.952658,0.000000,"" \n "Check for HC" \n ""}; link0[] = {0,1}; link1[] = {1,2}; link2[] = {2,4}; link3[] = {3,6}; link4[] = {4,5}; link5[] = {5,3}; link6[] = {5,9}; link7[] = {6,7}; link8[] = {7,2}; link9[] = {9,8}; globals[] = {0.000000,0,0,0,0,640,480,1,53,6316128,1,-481.887177,425.726196,554.522583,-436.926575,170,901,1}; window[] = {0,-1,-1,-32000,-32000,1065,104,1468,104,1,188}; *//*%FSM</HEAD>*/ class FSM { fsmName = "Server-Side Cleanup"; class States { /*%FSM<STATE "init">*/ class init { name = "init"; init = /*%FSM<STATEINIT""">*/"private [""_impound"",""_cars"",""_objs"",""_totCars"",""_thread""];" \n "_impound = time;" \n "_cars = time;" \n "_objs = time;" \n "cleanupFSM setFSMVariable [""stopfsm"",false];"/*%FSM</STATEINIT""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; class Links { /*%FSM<LINK "true">*/ class true { priority = 0.000000; to="Share__Work_load"; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; }; /*%FSM</LINK>*/ }; }; /*%FSM</STATE>*/ /*%FSM<STATE "Share__Work_load">*/ class Share__Work_load { name = "Share__Work_load"; init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; class Links { /*%FSM<LINK "Time_Check">*/ class Time_Check { priority = 0.000000; to="Delete_Dead_Cars"; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; condition=/*%FSM<CONDITION""">*/"((time - _cars) > (3 * 60))"/*%FSM</CONDITION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; }; /*%FSM</LINK>*/ }; }; /*%FSM</STATE>*/ /*%FSM<STATE "Delete_Dead_Cars">*/ class Delete_Dead_Cars { name = "Delete_Dead_Cars"; init = /*%FSM<STATEINIT""">*/"{" \n " if (!alive _x) then {" \n " _dbInfo = _x getVariable [""dbInfo"",[]];" \n " if (count _dbInfo > 0) then {" \n " _uid = _dbInfo select 0;" \n " _plate = _dbInfo select 1;" \n " _insureSystem = _dbInfo select 2;" \n " diag_log "" destroy vehicle !"";" \n " diag_log format[""insureSystem = %1 "", _insureSystem];" \n " if(_insureSystem == 1) then " \n " { diag_log "" Insured !"";" \n " diag_log format[""insureSystem = %1 "", _insureSystem];" \n "" \n " _query_0 = format [""UPDATE vehicles SET alive='1', insure='0', active='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate];" \n " _query_0 spawn {" \n " " \n " _thread = [_this,1] call DB_fnc_asyncCall;" \n " };" \n " } else {" \n " diag_log "" Not insured !"";" \n " diag_log format[""insureSystem = %1 "", _insureSystem];" \n " _query = format[""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n " _query spawn {" \n " _thread = [_this,1] call DB_fnc_asyncCall;" \n " };" \n " };" \n " if (!isNil ""_x"" && {!isNull _x}) then {" \n " deleteVehicle _x;" \n " };" \n " };" \n "};" \n "} forEach allMissionObjects ""LandVehicle"";" \n "" \n "{" \n " if (!alive _x) then {" \n " _dbInfo = _x getVariable [""dbInfo"",[]];" \n " if (count _dbInfo > 0) then {" \n " _uid = _dbInfo select 0;" \n " _plate = _dbInfo select 1;" \n " _insureSystem = _dbInfo select 2;" \n " diag_log "" destroy vehicle !"";" \n " diag_log format[""insureSystem = %1 "", _insureSystem];" \n " if(_insureSystem == 1) then" \n " { diag_log "" Insured !"";" \n " diag_log format[""insureSystem = %1 "", _insureSystem];" \n " _query_0 = format [""UPDATE vehicles SET alive='1', insure='0', active='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate];" \n " _query_0 spawn {" \n " " \n " _thread = [_this,1] call DB_fnc_asyncCall;" \n " };} else { " \n " diag_log "" Not Insured !"";" \n " diag_log format[""insureSystem = %1 "", _insureSystem];" \n " _query = format[""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n " _query spawn {" \n " _thread = [_this,1] call DB_fnc_asyncCall;" \n " };" \n " };" \n " };" \n " if (!isNil ""_x"" && {!isNull _x}) then {" \n " deleteVehicle _x;" \n " };" \n " };" \n "} forEach allMissionObjects ""Air"";" \n "_cars = time;" \n "" \n "//Group cleanup." \n "{" \n " if (units _x isEqualTo [] && local _x) then {" \n " deleteGroup _x;" \n " };" \n "} forEach allGroups;"/*%FSM</STATEINIT""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; class Links { /*%FSM<LINK "Check_for_HC_">*/ class Check_for_HC_ { priority = 0.000000; to="End_Cleanup_"; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; condition=/*%FSM<CONDITION""">*/"cleanupFSM getFSMVariable ""stopfsm"""/*%FSM</CONDITION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; }; /*%FSM</LINK>*/ /*%FSM<LINK "Continue__">*/ class Continue__ { priority = 0.000000; to="Share__Work_load"; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; condition=/*%FSM<CONDITION""">*/"!(cleanupFSM getFSMVariable ""stopfsm"")"/*%FSM</CONDITION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; }; /*%FSM</LINK>*/ }; }; /*%FSM</STATE>*/ /*%FSM<STATE "End_Cleanup_">*/ class End_Cleanup_ { name = "End_Cleanup_"; init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; class Links { }; }; /*%FSM</STATE>*/ }; initState="init"; finalStates[] = { "End_Cleanup_", }; }; /*%FSM</COMPILE>*/
  20. 2 likes
    Advanced Handcuff's & Key's Hello everyone, this is my first time making a script and releasing it to the public Make it so cops need to buy handcuffs and keys from the store to be able to restrain and un restrain players , Just a easy thing to add what can bring alot of rp. Also this took me around 10 minutes to make and there might be a better way but i'm still a noob so no hate please, And if i missed something or done something wrong please comment it below and i will update it Icons will be provided if needed (there not the best:P *Change Log* - Fixed a error with Config_Vitems -Added Icons ------------------Step 1----------------------- Head over to your fn_restrainAction.sqf Under if (player isEqualTo _unit) exitWith {}; Add: if(!([false,"handcuff",1] call life_fnc_handleInv)) exitWith { hint "You dont have Handcuffs"; }; [true,"handcuff",1] call life_fnc_handleInv; //Remove this if you don't want it to give the handcuffs back after restraining. (I added it because IRL you would get the cuffs back after taking them off....) --------------------------Step 2----------------------------- Head over to your fn_unrestrain.sqf Under : _unit = param [0,objNull,[objNull]]; Add : if(!([false,"keys",1] call life_fnc_handleInv)) exitWith { hint "You dont have Handcuff key's"; }; [true,"keys",1] call life_fnc_handleInv; // Remove if you want the keys a one time use. ----------------------------------Step 3---------------------------------- Head over to your Config_Vitems.hpp And under class goldbar add class handcuffs { variable = "handcuffs"; displayName = "STR_Item_lol"; weight = 1; buyPrice = 25; sellPrice = -1; illegal = false; edible = -1; icon = "icons\cuffs.paa"; }; class keys { variable = "keys"; displayName = "STR_Item_Keys"; weight = 1; buyPrice = 25; sellPrice = -1; illegal = false; edible = -1; icon = "icons\icon_keys.paa"; }; Then find class cop and add : "handcuff","keys" ------------------------------Step 4------------------- Then head over to your stringtable and add </Key> <Key ID="STR_Item_lol"> //Lol because i was cba and in a rush lol , change it if you must <Original>Handcuff's</Original> <Czech>Handcuff's</Czech> </Key> <Key ID="STR_Item_key"> <Original>Handcuff Key's</Original> <Czech>Handcuff Key's</Czech> </Key> Icons if you don't have any : (Must add the icons to your icon folder) icon_keys.paa cuffs.paa
  21. 2 likes
    New Cell Phone & Player Menu Go to icons folder and create a new folder called Phone, download the Zip folder and paste the icons there. https://www.altisliferpg.com/applications/core/interface/file/attachment.php?id=1136 Go to dialogs in your Mission File -- > and create a new file called smartphone.hpp class life_main_menu { idd = 2002; name= "life_main_menu"; movingEnable = 0; enableSimulation = 1; onLoad = ""; class controlsBackground { class Phoneframe: Life_RscPicture { idc = 1200; text = "Icons\Phone\Phone.paa"; x = 0.357136 * safezoneW + safezoneX; y = 0.225067 * safezoneH + safezoneY; w = 0.280802 * safezoneW; h = 0.527872 * safezoneH; }; }; class controls { class exitPhone: Life_RscButtonInvisible { idc = -1; x = 0.487214 * safezoneW + safezoneX; y = 0.69276 * safezoneH + safezoneY; w = 0.0232935 * safezoneW; h = 0.0469559 * safezoneH; onButtonClick = "closeDialog 1;"; tooltip = "Close your phone"; //--- ToDo: Localize; }; class PictureSettings: Life_RscPicture { idc = 1201; text = "Icons\Phone\settings.paa"; x = 0.440884 * safezoneW + safezoneX; y = 0.302048 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonSettings: Life_RscButtonInvisible { idc = -1; x = 0.440884 * safezoneW + safezoneX; y = 0.302048 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; onButtonClick = "[] call life_fnc_settingsMenu;"; tooltip = "Settings Menu"; //--- ToDo: Localize; }; class PictureGang: Life_RscPicture { idc = 1202; text = "Icons\Phone\Gang.paa"; x = 0.485221 * safezoneW + safezoneX; y = 0.302048 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonMyGang: Life_RscButtonInvisible { idc = 2011; x = 0.485221 * safezoneW + safezoneX; y = 0.302048 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; onButtonClick = "if (isNil ""life_action_gangInUse"") then {if (isNil {(group player) getVariable ""gang_owner""}) then {createDialog ""Life_Create_Gang_Diag"";} else {[] spawn life_fnc_gangMenu;};};"; tooltip = "Gang Menu"; //--- ToDo: Localize; }; class PictureKeys: Life_RscPicture { idc = 1203; text = "Icons\Phone\key.paa"; x = 0.529558 * safezoneW + safezoneX; y = 0.302048 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonKeys: Life_RscButtonInvisible { idc = 2013; x = 0.529558 * safezoneW + safezoneX; y = 0.302048 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; onButtonClick = "createDialog ""Life_key_management"";"; tooltip = "Keys Managment"; //--- ToDo: Localize; }; class PictureSyncData: Life_RscPicture { idc = 1204; text = "Icons\Phone\memorycard.paa"; x = 0.440884 * safezoneW + safezoneX; y = 0.390027 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonSyncData: Life_RscButtonInvisible { idc = -1; x = 0.440884 * safezoneW + safezoneX; y = 0.390027 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; onButtonClick = "[] call SOCK_fnc_syncData;"; tooltip = "Synchronize your data here"; //--- ToDo: Localize; }; class PictureAdminMenu: Life_RscPicture { idc = 1205; text = "Icons\Phone\security.paa"; x = 0.440884 * safezoneW + safezoneX; y = 0.565984 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonAdminMenu: Life_RscButtonInvisible { idc = 2021; x = 0.440884 * safezoneW + safezoneX; y = 0.565984 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; onButtonClick = "closeDialog 0; createDialog ""life_admin_menu"";"; tooltip = "Open the admin menu here"; //--- ToDo: Localize; }; class PicturePlayerMenu: Life_RscPicture { idc = 1206; text = "Icons\Phone\PlayerMenu.paa"; x = 0.485221 * safezoneW + safezoneX; y = 0.390027 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonPlayerMenu: Life_RscButtonInvisible { idc = 2411; x = 0.485221 * safezoneW + safezoneX; y = 0.390027 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; onButtonClick = "[] call life_fnc_p_openMenu"; tooltip = "Opens your inventory menu"; //--- ToDo: Localize; }; class PictureAuctionHouse: Life_RscPicture { idc = 1207; text = "Icons\Phone\cart.paa"; x = 0.529558 * safezoneW + safezoneX; y = 0.390027 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonAuctions: Life_RscButtonInvisible { idc = 2407; x = 0.529558 * safezoneW + safezoneX; y = 0.390027 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; tooltip = "Opens a list of available auctions"; //--- ToDo: Localize; }; class PictureWantedList: Life_RscPicture { idc = 1208; text = "Icons\Phone\caution.paa"; x = 0.529558 * safezoneW + safezoneX; y = 0.478005 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonWantedList: Life_RscButtonInvisible { idc = 2012; x = 0.529558 * safezoneW + safezoneX; y = 0.478005 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; OnButtonClick = "[] call life_fnc_wantedMenu"; tooltip = "View all the wanted people of altis"; //--- ToDo: Localize; }; class PictureCone: Life_RscPicture { idc = 1209; text = "Icons\Phone\cone.paa"; x = 0.485221 * safezoneW + safezoneX; y = 0.478005 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonBarriers: Life_RscButtonInvisible { idc = 2409; x = 0.485221 * safezoneW + safezoneX; y = 0.478005 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; tooltip = "Menu to place barriers"; //--- ToDo: Localize; }; class PicturesMessages: Life_RscPicture { idc = 1210; text = "Icons\Phone\chat.paa"; x = 0.440884 * safezoneW + safezoneX; y = 0.478005 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; }; class ButtonMessages: Life_RscButtonInvisible { idc = 2014; onButtonClick = "createDialog ""Life_cell_phone"";"; x = 0.440884 * safezoneW + safezoneX; y = 0.478005 * safezoneH + safezoneY; w = 0.0295581 * safezoneW; h = 0.0549866 * safezoneH; tooltip = "Opens the menu to compose messages"; //--- ToDo: Localize; }; }; }; Go to dialogs --> and then open the file MasterHandler and add this to the end: #include "smartphone.hpp" Afterwards go and find the file player_inv.hpp and replace it with the content underneath: /* File: player_inv.hpp */ #include "player_sys.sqf" class playerSettings { idd = playersys_DIALOG; movingEnable = 1; enableSimulation = 1; class controlsBackground { class Life_RscTitleBackground: Life_RscText { idc = -1; x = 0.303077 * safezoneW + safezoneX; y = 0.335 * safezoneH + safezoneY; w = 0.393846 * safezoneW; h = 0.022 * safezoneH; colorBackground[] = {0,0,0,0.9}; }; class MainBackground: Life_RscText { idc = -1; x = 0.303077 * safezoneW + safezoneX; y = 0.357 * safezoneH + safezoneY; w = 0.393846 * safezoneW; h = 0.33 * safezoneH; colorBackground[] = {0,0,0,0.7}; }; class Title: Life_RscTitle { idc = -1; text = "Player Menu"; //--- ToDo: Localize; x = 0.303077 * safezoneW + safezoneX; y = 0.335 * safezoneH + safezoneY; w = 0.315077 * safezoneW; h = 0.022 * safezoneH; colorText[] = {0.95,0.95,0.95,1}; }; class moneyStatusInfo: Life_RscStructuredText { idc = 2015; x = 0.314334 * safezoneW + safezoneX; y = 0.401003 * safezoneH + safezoneY; w = 0.118154 * safezoneW; h = 0.33 * safezoneH; }; class PlayersName: Title { idc = carry_weight; style = 1; x = 0.303077 * safezoneW + safezoneX; y = 0.335 * safezoneH + safezoneY; w = 0.393846 * safezoneW; h = 0.022 * safezoneH; colorText[] = {0.95,0.95,0.95,1}; }; }; class controls { class itemHeader: Life_RscText { idc = -1; text = "Current Items"; //--- ToDo: Localize; x = 0.547262 * safezoneW + safezoneX; y = 0.368 * safezoneH + safezoneY; w = 0.113231 * safezoneW; h = 0.022 * safezoneH; colorBackground[] = {0,0,0,0.9}; }; class licenseHeader: Life_RscText { idc = -1; text = "Licenses"; //--- ToDo: Localize; x = 0.411385 * safezoneW + safezoneX; y = 0.368 * safezoneH + safezoneY; w = 0.113231 * safezoneW; h = 0.022 * safezoneH; colorBackground[] = {0,0,0,0.9}; }; class moneySHeader: Life_RscText { idc = -1; text = "Money Stats"; //--- ToDo: Localize; x = 0.312923 * safezoneW + safezoneX; y = 0.368 * safezoneH + safezoneY; w = 0.0862524 * safezoneW; h = 0.022 * safezoneH; colorBackground[] = {0,0,0,0.9}; }; class itemList: Life_RscListBox { idc = 2005; x = 0.549231 * safezoneW + safezoneX; y = 0.401 * safezoneH + safezoneY; w = 0.108308 * safezoneW; h = 0.165 * safezoneH; }; class moneyEdit: Life_RscEdit { idc = 2018; text = "1"; //--- ToDo: Localize; x = 0.317846 * safezoneW + safezoneX; y = 0.467 * safezoneH + safezoneY; w = 0.0708924 * safezoneW; h = 0.0165 * safezoneH; }; class NearPlayers: Life_RscCombo { idc = 2022; x = 0.317846 * safezoneW + safezoneX; y = 0.5 * safezoneH + safezoneY; w = 0.0708924 * safezoneW; h = 0.0165 * safezoneH; }; class moneyDrop: Life_RscButtonMenu { idc = 2001; onButtonClick = "[] call life_fnc_giveMoney"; text = "Give"; //--- ToDo: Localize; x = 0.317846 * safezoneW + safezoneX; y = 0.533 * safezoneH + safezoneY; w = 0.0512 * safezoneW; h = 0.0198 * safezoneH; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.9}; }; class itemEdit: Life_RscEdit { idc = 2010; text = "1"; //--- ToDo: Localize; x = 0.549231 * safezoneW + safezoneX; y = 0.5715 * safezoneH + safezoneY; w = 0.108308 * safezoneW; h = 0.022 * safezoneH; colorBackground[] = {0,0,0,0.9}; }; class iNearPlayers: Life_RscCombo { idc = 2023; x = 0.549231 * safezoneW + safezoneX; y = 0.599 * safezoneH + safezoneY; w = 0.108308 * safezoneW; h = 0.0165 * safezoneH; }; class DropButton: Life_RscButtonMenu { idc = 2002; onButtonClick = "[] call life_fnc_giveItem;"; text = "Give"; //--- ToDo: Localize; x = 0.623077 * safezoneW + safezoneX; y = 0.632 * safezoneH + safezoneY; w = 0.0541539 * safezoneW; h = 0.022 * safezoneH; colorText[] = {1,1,1,1}; 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}; }; class UseButton: Life_RscButtonMenu { onButtonClick = "[] call life_fnc_useItem;"; idc = 1015; text = "Use"; //--- ToDo: Localize; x = 0.564 * safezoneW + safezoneX; y = 0.632 * safezoneH + safezoneY; w = 0.0541539 * safezoneW; h = 0.022 * safezoneH; colorText[] = {1,1,1,1}; 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}; }; class RemoveButton: Life_RscButtonMenu { onButtonClick = "[] call life_fnc_removeItem;"; idc = 1016; text = "Remove"; //--- ToDo: Localize; x = 0.504923 * safezoneW + safezoneX; y = 0.632 * safezoneH + safezoneY; w = 0.0516923 * safezoneW; h = 0.022 * safezoneH; colorText[] = {1,1,1,1}; 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}; }; class ButtonClose: Life_RscButtonMenu { onButtonClick = "closeDialog 0;"; idc = -1; text = "CLOSE"; //--- ToDo: Localize; x = 0.303077 * safezoneW + safezoneX; y = 0.665 * safezoneH + safezoneY; w = 0.0615385 * safezoneW; h = 0.022 * safezoneH; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.8}; tooltip = "Close the Player Menu"; //--- ToDo: Localize; }; class FrameBorder1: Life_RscText { idc = -1; x = 0.303077 * safezoneW + safezoneX; y = 0.687 * safezoneH + safezoneY; w = 0.393846 * safezoneW; h = 0.0055 * safezoneH; colorBackground[] = {0,0,0,0.9}; }; class InfoButton: Life_RscButtonMenu { action = "<a href='http://a3globalgaming.co.uk/redirect.html'</a"; idc = 1020; text = "Teamspeak Server"; //--- ToDo: Localize; x = 0.381404 * safezoneW + safezoneX; y = 0.665005 * safezoneH + safezoneY; w = 0.0886155 * safezoneW; h = 0.022 * safezoneH; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.8}; }; class InfoButtonWebsite: Life_RscButtonMenu { onButtonClick = ""; idc = 1021; text = "Our Website"; //--- ToDo: Localize; x = 0.463905 * safezoneW + safezoneX; y = 0.665005 * safezoneH + safezoneY; w = 0.0886155 * safezoneW; h = 0.022 * safezoneH; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.8}; }; class Licenses_Menu: Life_RscControlsGroup { idc = -1; x = 0.413329 * safezoneW + safezoneX; y = 0.39963 * safezoneH + safezoneY; w = 0.110277 * safezoneW; h = 0.209 * safezoneH; class Controls { class Life_Licenses: Life_RscStructuredText { idc = 2014; sizeEx = 0.020; text = ""; x = 0; y = 0; w = 0.27; h = 0.65; }; }; }; }; }; Go to > Core\pmenu, and find the file fn_p_openMenu.sqf, Replace that file with the content underneath #include "..\..\script_macros.hpp" /* File: fn_p_openMenu.sqf Author: Bryan "Tonic" Boardwine Description: Opens the players virtual inventory menu */ if (!alive player) exitWith {}; //Prevent them from opening this for exploits while dead. createDialog "playerSettings"; disableSerialization; [] call life_fnc_p_updateMenu; In Core-->PMenu, create a new file called fn_openMainMenu.sqf #include "..\..\script_macros.hpp" /* File: fn_openMainMenu.sqf Author: Bryan "Tonic" Boardwine */ if(!alive player || dialog) exitWith { hint "You cannot open the Main Menu in your state"; }; createDialog "life_main_menu"; disableSerialization; switch (playerSide) do { case west: { ctrlShow[2011,false]; ctrlShow[1202,false] }; case civilian: { ctrlShow[2012,false]; ctrlShow[2409,false]; ctrlShow[1208,false]; ctrlShow[1209,false]; }; case independent: { ctrlShow[2012,false]; ctrlShow[2011,false]; }; }; if (FETCH_CONST(life_Adminlevel) < 1) then { ctrlShow[2021,false]; ctrlShow[1205,false]; }; Find the file Functions.hpp, in that file find the class Player_Menu, and add a new class class openMainMenu {}; Go to Core->Functions. And find the file fn_keyhandler.sqf - Open the file and find this case 21: { if (!_alt && !_ctrlKey && !dialog && !(player getVariable ["restrained",false]) && {!life_action_inUse}) then { [] call life_fnc_p_openMenu; }; }; Replace that with this: case 21: { if (!_alt && !_ctrlKey && !dialog && !(player getVariable ["restrained",false]) && {!life_action_inUse}) then { [] call life_fnc_openMainMenu; }; }; Go to dialogs and then common.hpp Find this class in common.hpp (Do not copy this) class Life_RscButtonMenu : Life_RscShortcutButton { idc = -1; type = 16; style = "0x02 + 0xC0"; default = 0; shadow = 0; x = 0; y = 0; w = 0.095589; h = 0.039216; animTextureNormal = "#(argb,8,8,3)color(1,1,1,1)"; animTextureDisabled = "#(argb,8,8,3)color(1,1,1,1)"; animTextureOver = "#(argb,8,8,3)color(1,1,1,1)"; animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; colorBackground[] = {0,0,0,0.8}; colorBackgroundFocused[] = {1,1,1,1}; colorBackground2[] = {0.75,0.75,0.75,1}; color[] = {1,1,1,1}; colorFocused[] = {0,0,0,1}; color2[] = {0,0,0,1}; colorText[] = {1,1,1,1}; colorDisabled[] = {1,1,1,0.25}; period = 1.2; periodFocus = 1.2; periodOver = 1.2; size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; tooltipColorText[] = {1,1,1,1}; tooltipColorBox[] = {1,1,1,1}; tooltipColorShade[] = {0,0,0,0.65}; class TextPos { left = "0.25 * (((safezoneW / safezoneH) min 1.2) / 40)"; top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; right = 0.005; bottom = 0.0; }; class Attributes { font = "RobotoCondensedLight"; color = "#E5E5E5"; align = "left"; shadow = "false"; }; class ShortcutPos { left = "(6.25 * (((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; top = 0.005; w = 0.0225; h = 0.03; }; soundEnter[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundEnter",0.09,1}; soundPush[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundPush",0.09,1}; soundClick[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundClick",0.09,1}; soundEscape[] = {"\A3\ui_f\data\sound\RscButtonMenu\soundEscape",0.09,1}; textureNoShortcut = ""; }; Add this part "AFTER" the Life_RscButtonMenu in Common.hpp class Life_RscButtonInvisible : Life_RscButtonMenu { animTextureNormal = "#(argb,8,8,3)color(1,1,1,0)"; animTextureDisabled = "#(argb,8,8,3)color(1,1,1,0)"; animTextureOver = "#(argb,8,8,3)color(1,1,1,0)"; animTextureFocused = "#(argb,8,8,3)color(1,1,1,0)"; animTexturePressed = "#(argb,8,8,3)color(1,1,1,0)"; animTextureDefault = "#(argb,8,8,3)color(1,1,1,0)"; colorBackground[] = {0, 0, 0, 0}; colorBackground2[] = {1, 1, 1, 0}; color[] = {1, 1, 1, 0}; color2[] = {1, 1, 1, 0}; colorText[] = {1, 1, 1, 0}; colorDisabled[] = {1, 1, 1, 0}; }; Phone.zip
  22. 2 likes
    Creator: Not sure to be honest, let's just say ClassifiedReborn EDIT: Creator was actually Trailerpark/Repentz. @Repentz For Credit. Garage Menu Tutorial: 1. Replace your impound.hpp with: class Life_impound_menu { idd = 2800; name="life_vehicle_shop"; movingEnable = 0; enableSimulation = 1; onLoad = "ctrlShow [2330,false];"; class controlsBackground { class InventoryBack:Life_RscPicture { text = "textures\UI\back_garage.paa"; idc = -1; x = 0.0978125 * safezoneW + safezoneX; y = -0.05 * safezoneH + safezoneY; w = 0.825 * safezoneW; h = 1.1 * safezoneH; }; }; class controls { class CloseBtn : Life_RscButtonMenu { idc = -1; onButtonClick = "closeDialog 0;"; x = 0.29375 * safezoneW + safezoneX; y = 0.313 * safezoneH + safezoneY; w = 0.020625 * safezoneW; h = 0.022 * safezoneH; tooltip = "$STR_Global_Close"; colorBackground[] = {0,0,0,0}; colorBackgroundFocused[] = {0,0,0,0}; colorBackground2[] = {0,0,0,0}; color[] = {1,1,1,1}; colorFocused[] = {0,0,0,0}; color2[] = {0,0,0,0}; colorText[] = {1,1,1,1}; }; class RentCar : Life_RscButtonMenu { idc = -1; onButtonClick = "[] call life_fnc_unimpound;"; x = 0.295812 * safezoneW + safezoneX; y = 0.72275 * safezoneH + safezoneY; w = 0.134062 * safezoneW; h = 0.03245 * safezoneH; tooltip = "$STR_Global_Retrieve"; colorBackground[] = {0,0,0,0}; colorBackgroundFocused[] = {0,0,0,0}; colorBackground2[] = {0,0,0,0}; color[] = {1,1,1,1}; colorFocused[] = {0,0,0,0}; color2[] = {0,0,0,0}; colorText[] = {1,1,1,1}; }; class BuyCar : life_RscButtonMenu { idc = -1; onButtonClick = "[] call life_fnc_sellGarage; closeDialog 0;"; x = 0.445138 * safezoneW + safezoneX; y = 0.72275 * safezoneH + safezoneY; w = 0.134062 * safezoneW; h = 0.03245 * safezoneH; tooltip = "$STR_Global_Sell"; colorBackground[] = {0,0,0,0}; colorBackgroundFocused[] = {0,0,0,0}; colorBackground2[] = {0,0,0,0}; color[] = {1,1,1,1}; colorFocused[] = {0,0,0,0}; color2[] = {0,0,0,0}; colorText[] = {1,1,1,1}; }; class VehicleList : Life_RscListBox { idc = 2802; text = ""; sizeEx = 0.04; colorBackground[] = {0,0,0,0}; onLBSelChanged = "_this call life_fnc_garageLBChange;"; x = 0.298906 * safezoneW + safezoneX; y = 0.368 * safezoneH + safezoneY; w = 0.165 * safezoneW; h = 0.33 * safezoneH; }; class vehicleInfomationList : Life_RscStructuredText { idc = 2803; text = ""; sizeEx = 0.035; colorBackground[] = {0,0,0,0}; x = 0.479375 * safezoneW + safezoneX; y = 0.368 * safezoneH + safezoneY; w = 0.2475 * safezoneW; h = 0.33 * safezoneH; }; class MainHideText : Life_RscText { idc = 2811; text = "$STR_ANOTF_QueryGarage"; x = 0.298906 * safezoneW + safezoneX; y = 0.5 * safezoneH + safezoneY; w = 0.170156 * safezoneW; h = 0.022 * safezoneH; }; }; }; 2. Make a new UI folder in your textures, and put back_garage.paa in it. Spawn Menu: 1. Replace your spawnSelection.hpp with: class life_spawn_selection { idd = 38500; movingEnabled = 0; enableSimulation = 1; class controlsBackground { class BGha: Life_RscPicture { idc = 38531; text = "textures\UI\bg.jpg"; x = 0 * safezoneW + safezoneX; y = 0 * safezoneH + safezoneY; w = 1 * safezoneW; h = 1 * safezoneH; }; class BGMenu: Life_RscPicture { idc = 38531; text = "textures\UI\back_spawn.paa"; x = 0.190625 * safezoneW + safezoneX; y = 0.093 * safezoneH + safezoneY; w = 0.629062 * safezoneW; h = 0.792 * safezoneH; }; class MapView : Life_RscMapControl { idc = 38502; colorBackground[] = {0,0,0,0.7}; x = 0.37625 * safezoneW + safezoneX; y = 0.324 * safezoneH + safezoneY; w = 0.376406 * safezoneW; h = 0.418 * safezoneH; maxSatelliteAlpha = 0.75;//0.75; alphaFadeStartScale = 1.15;//0.15; alphaFadeEndScale = 1.29;//0.29; }; }; class controls { class SpawnPointList: Life_RscListNBox { idc = 38510; text = ""; sizeEx = 0.041; coloumns[] = {0,0,0.9}; drawSideArrows = 0; idcLeft = -1; idcRight = -1; rowHeight = 0.050; x = 0.247344 * safezoneW + safezoneX; y = 0.324 * safezoneH + safezoneY; w = 0.12375 * safezoneW; h = 0.374 * safezoneH; onLBSelChanged = "_this call life_fnc_spawnPointSelected;"; }; class spawnButton : Life_RscButtonMenu { idc = -1; type = 1; style = "0x02"; colorBackground[] = {0.03,0.55,0.95,1}; text = "Spawn"; onButtonClick = "[] call life_fnc_spawnConfirm"; x = 0.247344 * safezoneW + safezoneX; y = 0.709 * safezoneH + safezoneY; w = 0.12375 * safezoneW; h = 0.033 * safezoneH; colorBackgroundActive[] = {0.06,0.32,0.96,1}; colorBackgroundDisabled[] = {0.95,0.95,0.95,0}; offsetX = 0.003; offsetY = 0.003; offsetPressedX = 0.002; offsetPressedY = 0.002; colorShadow[] = {0,0,0,1}; colorBorder[] = {0,0,0,0}; borderSize = 0.008; }; /* class LastPos : Life_RscButtonMenu { idc = 1001; type = 1; style = "0x02"; colorBackground[] = {0,1,0,0.5}; text = "Letzte Position"; onButtonClick = "[] call life_fnc_spawnLast"; x = 0.247344 * safezoneW + safezoneX; y = 0.665 * safezoneH + safezoneY; w = 0.12375 * safezoneW; h = 0.033 * safezoneH; colorBackgroundActive[] = {0,1,0,0.7}; colorBackgroundDisabled[] = {0.95,0.95,0.95,0}; offsetX = 0.003; offsetY = 0.003; offsetPressedX = 0.002; offsetPressedY = 0.002; colorShadow[] = {0,0,0,1}; colorBorder[] = {0,0,0,0}; borderSize = 0.008; };*/ }; }; Then make (or if you have one) a UI folder and put back_spawn.paa in there. You want to find a random picture from google and put it in your UI folder and name it bg.jpg. If you don't have a picture I will provide you with one. I can't post links to images here, I will use a external source. bg.jpg Screenshots: (Thanks too @Dave650 for these)
  23. 2 likes
    Tell us about yourself: Hello, I am Rodriguez. I am an outstanding person, well that sounds conceded, but I love to have fun, I love talking to people, and of course i'm always willing to help those who need it. I am somewhat a serious person, however I enjoy having fun at times too. I've been in the Arma scene for quite a while, I started playing DayZ then I went into Arma 3 Roleplay. I've always had an addiction to owning servers, starting with Minecraft and Garry's Mod to Arma 3 Life servers & DayZ Standalone servers. With owning servers, required me to learn how to develop servers, script, and how to manage a community. Also, owning servers really opened my eyes on how to be mature and appropriate across the internet. With Arma 3 servers, I have always owned modded life servers, which allowed me to practically customize anything I wanted, which is why I loved modded Arma 3 Life. One of the main reasons I enjoyed owning servers, was also the ability to allow people to meet and help people in any way I can. Which is why most communities I play on, I try to become staff or somewhat helpful so I return the favor. What's your experience with SQF and SQL languages, or other sorts of Arma related development? I'm going to be straight froward, i'm not Albert Einstein when it comes to SQF and SQL, however I do have knowledge about the topic. I defiantly have enough capability to help people, fix various problems, and manage server difficulties. I believe if I dedicated myself, I could create a cool & creative script. Why do you want to be a Helper? I would like to become helper because I feel that the position would be great for someone like me. With the position, I would be dedicating myself to helping people more then I already am. I've always wanted to help with AltisLifeRPG since I joined in 2016, and now with the possibility of the position, I feel I can pursue it. My primary mission is to spread positivity throughout the forums, help people, and be a great addition to the helper team. What can you bring to the community? I can bring new, detailed support towards players in the community. I can also ensure that I bring an extremely helpful addition to AltisLifeRPG. I would try to get rid of any toxicity on the forums and pursue to make it a positive & helpful forums for support for any player. I will make AltisLifeRPG better then it already is. If you were to become a helper, would a moderator position be appealing to you as well in the future? Yes of course, anything to be more helpful towards the community.
  24. 2 likes
    Author: ScarsoLP Post From: Click Me Step One: Create a file in the functions folder called fn_initPayChecks.sqf and then copy and paste the code below. #include "..\..\script_macros.hpp" /* File: fn_initPayChecks.sqf Author: ScarsoLP Description: Changes The Player(s) paycheck depending on what rank/level they are in the Police/NHS/Donator. Also changes the palyer(s) paycheck depending on what licenses they have. */ /* Changes The Paycheck Depending On Levels */ switch (playerSide) do { case west: { switch(FETCH_CONST(life_coplevel)) do { case 0: {life_paycheck = life_paycheck + 0;}; case 1: {life_paycheck = life_paycheck + 2000;}; case 2: {life_paycheck = life_paycheck + 2500;}; case 3: {life_paycheck = life_paycheck + 3000;}; case 4: {life_paycheck = life_paycheck + 3500;}; case 5: {life_paycheck = life_paycheck + 4000;}; case 6: {life_paycheck = life_paycheck + 4500;}; case 7: {life_paycheck = life_paycheck + 5000;}; }; switch(FETCH_CONST(life_donorlevel)) do { case 0: {life_paycheck = life_paycheck + 0;}; case 1: {life_paycheck = life_paycheck + 2000;}; case 2: {life_paycheck = life_paycheck + 2500;}; case 3: {life_paycheck = life_paycheck + 3000;}; case 4: {life_paycheck = life_paycheck + 3500;}; case 5: {life_paycheck = life_paycheck + 4000;}; }; }; case independent: { switch(FETCH_CONST(life_mediclevel)) do { case 0: {life_paycheck = life_paycheck + 0;}; case 1: {life_paycheck = life_paycheck + 2000;}; case 2: {life_paycheck = life_paycheck + 2500;}; case 3: {life_paycheck = life_paycheck + 3000;}; case 4: {life_paycheck = life_paycheck + 3500;}; case 5: {life_paycheck = life_paycheck + 4000;}; }; switch(FETCH_CONST(life_donorlevel)) do { case 0: {life_paycheck = life_paycheck + 0;}; case 1: {life_paycheck = life_paycheck + 2000;}; case 2: {life_paycheck = life_paycheck + 2500;}; case 3: {life_paycheck = life_paycheck + 3000;}; case 4: {life_paycheck = life_paycheck + 3500;}; case 5: {life_paycheck = life_paycheck + 4000;}; }; }; case civilian: { switch(FETCH_CONST(life_donorlevel)) do { case 0: {life_paycheck = life_paycheck + 0;}; case 1: {life_paycheck = life_paycheck + 2000;}; case 2: {life_paycheck = life_paycheck + 2500;}; case 3: {life_paycheck = life_paycheck + 3000;}; case 4: {life_paycheck = life_paycheck + 3500;}; case 5: {life_paycheck = life_paycheck + 4000;}; }; }; }; Step Two: go to the Functions.hpp under class Functions add: class initPayChecks {}; Step Three: Add this call at the bottom in fn_initMedic.sqf, fn_initCop.sqf, fn_initCiv.sqf [] call life_fnc_initPayChecks; There is probably a better file to call for this but I have always had the call here so it will stay here. Now you can change the values in the script to fit what you would like and have a blast
  25. 2 likes
    Autor: Scarso327 Warning!: The message will come but j dont know how to deactivate the standard arma 3 death messages 1. Open your stringtable.xml and add: <Package name="NHS"> <Key ID="STR_NHS_Died"> <Original>%1 has died from there injuries.</Original> </Key> <Key ID="STR_NHS_Killed"> <Original>%1 has been heavily wounded by %2!</Original> </Key> <Key ID="STR_NHS_Suicide"> <Original>%1 has been heavily wounded!</Original> </Key> <Key ID="STR_NHS_PlayerRevived"> <Original>%1 has been revived!</Original> </Key> </Package> 2. In fn_onPlayerKilled.sqf search and replace: //Make the killer wanted if(!isNull _killer && {_killer != _unit} && {side _killer != west} && {alive _killer}) then { if(vehicle _killer isKindOf "LandVehicle") then { [getPlayerUID _killer,_killer GVAR ["realname",name _killer],"187V"] remoteExecCall ["life_fnc_wantedAdd",RSERV]; //Get rid of this if you don't want automatic vehicle license removal. if(!local _killer) then { [2] remoteExecCall ["life_fnc_removeLicenses",_killer]; }; } else { [getPlayerUID _killer,_killer GVAR ["realname",name _killer],"187"] remoteExecCall ["life_fnc_wantedAdd",RSERV]; if(!local _killer) then { [3] remoteExecCall ["life_fnc_removeLicenses",_killer]; }; }; }; to //Make the killer wanted if(!isNull _killer && {_killer != _unit} && {side _killer != west} && {alive _killer}) then { if(vehicle _killer isKindOf "LandVehicle") then { if(life_HC_isActive) then { [getPlayerUID _killer,_killer GVAR ["realname",name _killer],"187V"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life]; } else { [getPlayerUID _killer,_killer GVAR ["realname",name _killer],"187V"] remoteExecCall ["life_fnc_wantedAdd",RSERV]; }; //Get rid of this if you don't want automatic vehicle license removal. if(!local _killer) then { [2] remoteExecCall ["life_fnc_removeLicenses",_killer]; }; } else { if(life_HC_isActive) then { [getPlayerUID _killer,_killer GVAR ["realname",name _killer],"187"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life]; } else { [getPlayerUID _killer,_killer GVAR ["realname",name _killer],"187"] remoteExecCall ["life_fnc_wantedAdd",RSERV]; }; if(!local _killer) then { [3] remoteExecCall ["life_fnc_removeLicenses",_killer]; }; }; [0,"STR_NHS_Killed",true,[profileName,_killer GVAR ["realname",name _killer]]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; } else { if(side _killer == west && playerSide != west) then { [0,"STR_NHS_Killed",true,[profileName,_killer GVAR ["realname",name _killer]]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; } else { [0,"STR_NHS_Suicide",true,[profileName]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; }; }; 3. Now go in your fn_respawned.sqf and search [] call SOCK_fnc_updateRequest; and add above: [0,"STR_NHS_Died",true,[profileName]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; Image:
  26. 2 likes
    Locked for not posting logs or any other helpful material. PM me when you're ready to follow the posting for help rules
  27. 2 likes
    Realistic Vehicle Towing Credits: Stay Alive Tactical Team Hey there, this script allows you to tow vehicles realistically using ropes, yes, it does check if the vehicle is locked. Video of it in use: 1. In initServer.sqf, place this near the bottom, if you don't have an initServer, create one in your main directory. diag_log "Attempting to initialize Towing Script..."; [] execVM "core\initTowing.sqf"; 2. Create a new file inside core or wherever you're calling it named initTowing.sqf 3. Place the following code inside: Click me, script was too long to post in this forums, just copy it from here. Pastebin Backup (optional) For towing only for a specific side or sides, place the call to initTowing in either initMedic, initCop, etc instead of initServer. 4. Done! Let me know if it works for you!
  28. 2 likes
    Fixed. Please re-download the .rar file, and move the new fn_weaponShopBuySellDebit.sqf and fn_virt_buyDebit.sqf over to your server and over-write the old files. Apologies for any inconvenience. If anyone else is also having the same issue, please do the same (this is for 4.4r3 only). Also, if anyone is having issues with players respawning with no gear, or licenses, please check your fn_mresArray.sqf is updated with the following fix: (4.4r3 only) https://github.com/AsYetUntitled/Framework/commit/db66e545ef02faec2a2e9fd152eb5260b3deab8a Thanks again @Jason_000!
  29. 2 likes
    items[] = { { "arifle_MXM_Black_F", "", 2750, -1 }, { "arifle_MX_Black_F", "", 2500, -1 }, You need to remove the final , in the array since you don't have any more elements after it. Like so: items[] = { { "arifle_MXM_Black_F", "", 2750, -1 }, { "arifle_MX_Black_F", "", 2500, -1 } You really need to look though your config. There's a lot of missing commas and there are commas at the end of arrays that shouldn't be there.
  30. 2 likes
    Just bear with me while I vent for a sec. I understand this forum is for people to come and use others "creations" to further their own interests (server wise) as well as to get help with issues. But what really annoys me, and I mean REALLY annoys me; here's it straight up, the fact that a large percentage of people commenting on this tutorial who have had issues have not even attempted to fix the issues themselfs. And to be frank if you don't attemp to fix these issues yourself how are you expected to be able to run your own server let alone community? I will admit, I myself have not had invested enough time into learning a 'C' language to be able to completely understand the Arma code variant. So listen or don't listen to me, your choice. Here's my two cents for all it's worth. You are wasting your money on sever hosting and more importantly wasting your time if you are going to solely rely on getting scripts from community forums. Don't take that the wrong way this is a great space to get ideas, collaborate and seek advice from other people. But as far as "DIY" goes most of you are hopeless. Here's a real world explanation; I wouldn't employ most of you in a workplace for one simple reason. You're incompetent, useless (excuse my language here) wankers for the most part. Work it out yourselves, it's not that complicated, put the effort in now and reap the rewards later. I made sure that my code worked before I posted it, I did it on 4.4r4 and I may have missed something in the tutorial I don't know. But I went and followed my OWN tutorial and installed it on a fresh mission file before posting to make sure it worked. If there is something wrong with it WORK IT OUT! I'm happy to help people get started on things but I'm not going to hold your hand all the way. If anyone took offence to this, I'm not sorry. And quite frankly if you did take offence to this. Maybe your the issue, think about that. For the people that put effort in, give yourself a pat on the back, you deserve it. For all the people who post tutorials on forums for others to use good on you. For the people who moderate and admin these sites, great job. I sincerely mean that, I really do. P.S I'm not going to respond to any further comments about this. I feel sorry for anyone who is too incapable and ignorant to accept my words as they are; make sure you go forth in life and make nothing of yourselfs. Cheers, David
  31. 2 likes
    Sorry you're having trouble with it. IIRC 4.4Rx uses different queries. When I get back from work on Thursday, I'll add compatibility. Keep in mind I didn't design this with 4.4Rx.
  32. 2 likes
  33. 2 likes
    ________________ Works in all versions ________________ Hi Everyone, Today I bring a script, which indicates who is speaking in the direct communication It will look like this: ___________________________________________________________ 1- navigate to the core folder then the functions folder, Create a file called fn_speaking.sqf and paste 2 - open Functions.hpp in root directory and paste under class functions 3) and open that your playertags.sqf 4)And open that your core\int.sqf
  34. 2 likes
    Make a new mission in the editor. Open the mission folder (It's probably somewhere in your documents) Make a new file inside of the folder with the mission.sqm called initPlayerLocal.sqf - Inside that add this: waitUntil{ !isNull player && alive player }; createDialog "playerSettings"; Once done, make a new file called description.ext - Inside that add the following: #include "dialog\common.hpp" #include "dialog\player_inv.hpp" Make a new folder where the mission.sqm is called dialog and copy altis life's player_inv.hpp over to it. Remove #include "player_sys.sqf" from player_inv.hpp and change idd = playersys_DIALOG to idd = 3000; Go to your altis life folder, inside dialog copy the common.hpp and paste it over to the new mission's dialog folder. Open the mission up in arma, put a playable NPC down and preview the mission. The dialog should pop up immediately (this is just for testing purposes so you can see what you're going to be changing) Press escape, open the GUI editor under the debug console. Once opened press CTRL+I and type the following: missionconfigfile >> "playerSettings" And then you'll be able to edit it. Make sure, before you change anything, to change the GUI to safezone so it's not messed up on other player's screens. Press CTRL+S to save the changes you've made, change the indent to 1 and controls as classes. Once saved it'll be on your clipboard. Someone tell me if I've made a mistake here, it's been a while
  35. 2 likes
    Server Information Website: www.HardlyGaming.net Teamspeak: Hardlygaming.voip.pub Direct Connection Info: 208.167.228.227 UP Time 24/7, 7 days a week Current Framework: 4.4R4 with extDB2 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Server Description Salutations, basement dwellers. Tired of lackluster, lifeless Altis Life communities that are part and parcel clones of previously established mission files? Have you been experiencing any mild gastrointestinal discomfort related to IBS? If you answered "I'm not comfortable responding you obnoxious prick," then we have a 10% success rate solution for you. Hardly Gaming Altis Life RPG. Features include but are not limited to: Overhauled map; heavily tweaked mission file; custom npcs; 1 million dollar start with properly paced money making; active administrators; custom meshes/textures, and so much more that I might just spontaneously combust. (Also Typed in Server Features ) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Server Features Active player base Supporting Staff Unique Server layout Farm-able fields Cinematic outro when leaving the server Custom cell phone Sky Diving Custom skins for civilians, medics, cops. This includes clothing / vehicles etc Introduction music when joining the server Custom Federal Reserve Custom Car features Balanced Money System Admin Events Veteran Owned and Opertated New Updates Weekly 1 million dollar start Custom Bridge to Pyrgos with town in middle So much more... --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Server Map Image Join us today on HardlyGaming! We would love to have you. If you join our Teamspeak just poke a SA(Server Admin) to get your tags! Cant wait to meet you all. Thanks for looking ~Brix
  36. 2 likes
    +1 I've known this dude for a few months I met him on a server called Abeloth. He's a chill dude and is a good web designer and developer. I would trust this man.
  37. 2 likes
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Difficulty: Easy Publish by: Heimdall Source AltisLifeRPG.com and publish by AltisDev.com : Link Translate, adapte and edit by: MoNtEcRiStO© Fixed by: Jason_000 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Go to Functions.hpp and add: class backup {}; class callBackup {}; should look something like this: class Functions { file = "core\cop"; ... ... class backup {}; class callBackup {}; }; Create a file in core/functions and name it "fn_callBackup.sqf" and add: /* Script file made by: Maximum Idea based off: Liemans script - did way to much to achieve the same thing. Description: Lets a officer request backup VIA scroll menu, made for ***AltisLifeRPG.com*** */ if (!life_callBackup) exitWith {hint "You can not do that now!"}; _backupTime = 60; [player,_backupTime] remoteExec ["life_fnc_backup",west]; life_callBackup = false; sleep _backupTime + 320; life_callBackup = true; hint format ["%1, You can call Backup again!",name player]; Create a folder inside core/cop and name it "fn_backup.sqf" and add: /* File: fn_backup.sqf */ params [ ["_player", objnull, [objnull]], ["_deleteTime", 60, [0]] ]; if (isNull _player) exitWith {}; if !(playerSide isEqualTo west) exitWith {}; _backupmsg = createMarkerLocal [("_backupmsg" + (_player getVariable["realname",name _player])), getPos _player]; _backupmsg setMarkerTypeLocal "mil_warning"; _backupmsg setMarkerColorLocal "colorRed"; _backupmsg setMarkerTextLocal format ["%1 is requesting backup here!", _player getVariable["realname",name _player]]; [1,format["%1 is in need of backup!",name _player]] remoteExecCall ["life_fnc_broadcast",west]; uiSleep _deleteTime; deleteMarkerLocal _backupmsg; Go to configuration.sqf and add the life Life Variables : life_callBackup = true; For finish go to core/fn_setupActions.sqf an add this: case west: { //Call backup life_actions pushBack (player addAction["<t color='#ADFF2F'>Request Backup</t>",life_fnc_callBackup,"",0,FALSE,FALSE,""]); }; Now open CfgRemoteExec.hpp and add F(life_fnc_backup,CLIENT) Done!
  38. 2 likes
    I have collected some Script Releases from the old Forum wich I can't find here. I only printed the Website in Reading View and basicView with FreePFD. I want to share this, maybe someone is bored and want to get this old stuff working. I am interested on the wantetbased speedradar and I will have a look on it in the next few days. [HOW TO] Molotov Cocktails [HOW TO] Watermark your server [How To]Alcohol with multiple item processing,Drunk Effects, Passouts, and Police Breathalyzing [HowTo] Have Sex with a hooker [HOWTO] midgetgrimm's alcohol system in Altis Life 4.0.0 [HOWTO] Persistent Vehicle Inventory [Script] ShipWreck's by Ryan [Script] Temporary Marriage [Tutorial] Fitness center which energizes [Tutorial] Stable Paintball Script [TUTORIAL] Wasted Death Screen Radar Script Robbing the ATM's In Altis Life Simple Organ Theft with Black Market Sales Speed radar cam (yes another, but different) Speedcontrolscript Give Credit to the author! ALRPG_ressource.rar
  39. 2 likes
    In gangWithdraw.sqf replace: private ["_value"]; _value = parseNumber(ctrlText 2702); _gFund = GANG_FUNDS; group player setVariable ["gbank_in_use_by",player,true]; with: private["_value","_ownerID"]; _value = parseNumber(ctrlText 2702); _gFund = GANG_FUNDS; _ownerID = group player getVariable ["gang_owner",""]; if !(_ownerID isEqualTo getPlayerUID player) exitWith {}; group player setVariable["gbank_in_use_by",player,true];
  40. 2 likes
    Hello! Thought i should share my old police skins i made for my own, and another Altis Life server. You are free to use these however you'd like, but feel free to credit me if you would like. ("sk0gshuggare") NOTE. i produced these skins under the name Savage, they are not stolen. INFO: The pack includes an own uniform for every rank, from cadet to chief with their rank-emblem on the shoulder, and a bonus traffic officer skin. Also includes Carryall and Kitbag skin. If you would like to change the current icons for the ranks, i included every swedish rank-icon in .paa format in there. The vehicles is 3 hunter skins, 2 suv skins, 1 offroad skin, 1 hatchback skin, 1 hellcat skin and 1 hummingbird. They are highly compressed, the total file size of all the skins is 1.83MB, which is nothing, but still has high quality. I'll also be releasing my Swedish medic pack in the near future, so look out for that! >>>DOWNLOAD<<< Here's some photos, enjoy! PICS: CHIEF SKIN (similar from Corporal-Chief but with rank specific emblem) CADET SKIN BONUS TRAFFIC POLICE // sk0gshuggare
  41. 2 likes
    Ok i fixed my issue with the market menu not loading, basically in the guide on the github their was a step missing 5. now open your CfgRemoteExec.hpp and paste this right below the server functions F(TON_fnc_playerLogged,SERVER) //DynMarket F(TON_fnc_getUpdate,SERVER) //DynMarket F(TON_fnc_changePrice, SERVER) //DynMarket F(life_fnc_update,CLIENT) //DynMarket
  42. 1 like
    bottom of the screen in the middle
  43. 1 like
    Dang look at all the nice people for once! everyone on this website seems to cry when someone isnt a pro arma dev
  44. 1 like
    not to point it out, but does that space need to be at the end? 901 " maybe this is why he cant be found
  45. 1 like
    lol. What do you think is wrong with this? Read it closely. lass blinkerclick { name = "blinkerclick"; sound[] = {"\sounds\blinkerclick_sfx.ogg", 1.0, 1}; titles[] = {}; };
  46. 1 like
  47. 1 like
    Also, if you have patched a money duplication bug you should push it to the GitHub to share with others.
  48. 1 like
    Hello, Here is a tutorial to increase the respawn time! This is a simple modification! It's sole objective is to increase the respawn time when a player request a medic! To give the medic the proper time to reach the dead player! I've recovered this from the archive - http://www.altisliferpg.com/topic/2768-tutorial-increasing-respawn-timer-after-requesting-medic/ It was developed for version 3.X of the framework, but I've modified it to work with 4.4R3, 5.0 and so on! Difficulty: Easy Author: Lukedbx (Not a 100% sure if he is the author, but he was the one that original posted this modification for version 3.x) Modified by: xShARkx Step 1. Open core\configuration.sqf Add the following in the backend variables section. life_request_timer = false; Step 2. Open core\medical\fn_onPlayerKilled Find: _RespawnBtn ctrlEnable false; waitUntil {_Timer ctrlSetText format [localize "STR_Medic_Respawn",[(_maxTime - time),"MM:SS"] call BIS_fnc_secondsToString]; round(_maxTime - time) <= 0 || isNull _this}; _RespawnBtn ctrlEnable true; _Timer ctrlSetText localize "STR_Medic_Respawn_2"; Change to: _RespawnBtn ctrlEnable false; waitUntil {_Timer ctrlSetText format [localize "STR_Medic_Respawn",[(_maxTime - time),"MM:SS"] call BIS_fnc_secondsToString]; round(_maxTime - time) <= 0 || isNull _this || life_request_timer}; if (life_request_timer) then { _maxTime = time + (LIFE_SETTINGS(getNumber,"respawn_timer") * 5); //multiples the respawn time set in the master config file by 5, to create the new respawn time! waitUntil {_Timer ctrlSetText format [localize "STR_Medic_Respawn",[(_maxTime - time),"MM:SS"] call BIS_fnc_secondsToString]; round(_maxTime - time) <= 0 || isNull _this}; }; life_request_timer = false; //resets increased respawn timer _RespawnBtn ctrlEnable true; _Timer ctrlSetText localize "STR_Medic_Respawn_2"; The whole section needs to look like this: //Create a thread for something? _unit spawn { private["_maxTime","_RespawnBtn","_Timer"]; disableSerialization; _RespawnBtn = ((findDisplay 7300) displayCtrl 7302); _Timer = ((findDisplay 7300) displayCtrl 7301); if (LIFE_SETTINGS(getNumber,"respawn_timer") < 5) then { _maxTime = time + 5; } else { _maxTime = time + LIFE_SETTINGS(getNumber,"respawn_timer"); }; _RespawnBtn ctrlEnable false; waitUntil {_Timer ctrlSetText format [localize "STR_Medic_Respawn",[(_maxTime - time),"MM:SS"] call BIS_fnc_secondsToString]; round(_maxTime - time) <= 0 || isNull _this || life_request_timer}; if (life_request_timer) then { _maxTime = time + (LIFE_SETTINGS(getNumber,"respawn_timer") * 5); //multiples the respawn time set in the master config file by 5, to create the new respawn time! waitUntil {_Timer ctrlSetText format [localize "STR_Medic_Respawn",[(_maxTime - time),"MM:SS"] call BIS_fnc_secondsToString]; round(_maxTime - time) <= 0 || isNull _this}; }; life_request_timer = false; //resets increased respawn timer _RespawnBtn ctrlEnable true; _Timer ctrlSetText localize "STR_Medic_Respawn_2"; }; Step 3. Open fn_requestMedic Add : life_request_timer = true; Above this part: //Create a thread to monitor duration since last request (prevent spammage). [] spawn { ((findDisplay 7300) displayCtrl 7303) ctrlEnable false; sleep (2 * 60); ((findDisplay 7300) displayCtrl 7303) ctrlEnable true; }; The whole file, should look like this: #include "..\..\script_macros.hpp" /* File: fn_requestMedic.sqf Author: Bryan "Tonic" Boardwine Description: N/A */ private "_medicsOnline"; _medicsOnline = {_x != player && {side _x isEqualTo independent} && {alive _x}} count playableUnits > 0; //Check if medics (indep) are in the room. life_corpse setVariable ["Revive",false,true]; //Set the corpse to a revivable state. if (_medicsOnline) then { //There is medics let's send them the request. [life_corpse,profileName] remoteExecCall ["life_fnc_medicRequest",independent]; } else { //No medics were online, send it to the police. [life_corpse,profileName] remoteExecCall ["life_fnc_medicRequest",west]; }; life_request_timer = true; //Create a thread to monitor duration since last request (prevent spammage). [] spawn { ((findDisplay 7300) displayCtrl 7303) ctrlEnable false; sleep (2 * 60); ((findDisplay 7300) displayCtrl 7303) ctrlEnable true; }; There you go! Now when a player uses the request medic button, the respawn time will increase! You can edit how much it will increase by editing the number 5 in this part: _maxTime = time + (LIFE_SETTINGS(getNumber,"respawn_timer") * 5); //multiples the respawn time set in the master config file by 5, to create the new respawn time! Please be smart! Don't quote the first post with the tutorial, it's stupid and makes the comment page a hell to scroll down! Just quote the first post if you are going to added something, improve something or fix something and just quote the part that matters and not the whole post! if you need to reach me, thank me, complain to me and etc, just use @xShARkx! If you quote the first post for no good damn reason it will be reported and deleted!
  49. 1 like
    Personally mate 1 mil doesnt promote RP but its ur server ur choice, Gather a community is difficult but having 1 mil start wont be great for RP in my opinion
  50. 1 like
    One more stupid comment from you and you are gone.