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

        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.


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by !TS JORDAN

  1. Altis Central Bank !TS JORDAN The tutorial adds a bank to Altis, it is based on the federal reserve scripts I have just edited them to work with a new location and what not, as well as the new bank there is a new "News Broadcast" when players rob the bank. You don't have to bolt cut any doors you just place the "codeCracker" like the blasting charge wait 6 mins for the timer (Defend it from cops, time can be altered) you get less money than what you would get from robbing the fed. Let's get started! NOTE: THIS IS FOR 4.4 - I MADE THIS USING 4.4r3 The files I use will be linked as a zip file for ease of access. Server File Edits: 1. missionname.altis >> config >> Config_Master.sqf Under line "minimum_cops" add minimum_cops_bank = 0; //Minimum cops required online to rob the Bank 2. missionname.altis >> config >> Config_vItems.sqf Add under Class VirtualItems class codeCracker { variable = "codeCracker"; displayName = "STR_Item_codeCracker"; weight = 2; buyPrice = 14000; sellPrice = 5000; illegal = true; edible = -1; icon = "icons\codeCracker.paa"; }; class counterfitCash { variable = "counterfitCash"; displayName = "STR_Item_counterfitCash"; weight = 4; buyPrice = -1; sellPrice = 52500; illegal = true; edible = -1; icon = "icons\counterfitCash.paa"; }; 3. missionname.altis >> config >> Config_vItems.sqf Add to your rebel and gang store. (Somewhere in Class VirtualShops) class rebel { name = "STR_Shops_Rebel"; side = "civ"; license = "rebel"; level[] = { "", "", -1, "" }; items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "lockpick", "pickaxe", "toolkit", "fuelFull", "peach", "boltcutter", "blastingcharge","codeCracker"}; }; class gang { name = "STR_Shops_Gang"; side = "civ"; license = ""; level[] = { "", "", -1, "" }; items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "lockpick", "pickaxe", "toolkit", "fuelFull", "peach", "boltcutter", "blastingcharge","codeCracker"}; }; class counterfitCash { name = "STR_Shops_CounterfitCash"; side = "civ"; license = ""; level[] = { "", "", -1, "" }; items[] = { "counterfitCash" }; }; NOTE: IF YOU ALREADY HAVE CUSTOM ITEMS JUST COPY THE "codeCracker" LINE!! MAKE SURE YOU ADD THE "counterfitCash" SHOP THOUGH!! 4. missionname.altis >> CfgRemoteExec.sqf Add under "F(life_fnc_AAN,CLIENT)" F(life_fnc_AAN_Bank,CLIENT) F(TON_fnc_handleBlastingChargeBank,SERVER) F(life_fnc_demoChargeTimerBank,ANYONE) 5. missionname.altis >> functions.hpp Under "Class Civillian" add class demoChargeTimerBank {}; Should look something like this: class Civilian { file = "core\civilian"; class civLoadout {}; class civMarkers {}; class demoChargeTimer {}; class demoChargeTimerBank {}; //Add this class freezePlayer {}; class jail {}; class jailMe {}; class knockedOut {}; class knockoutAction {}; class removeLicenses {}; class robPerson {}; class robReceive {}; class tazed {}; }; 6. missionname.altis >> functions.hpp Under "Class Dialog_Controls" add class safeInventoryBank {}; class safeOpenBank {}; class safeTakeBank {}; Should look like this: class Dialog_Controls { file = "dialog\function"; class bankDeposit {}; class bankTransfer {}; class bankWithdraw {}; class displayHandler {}; class gangDeposit {}; class gangWithdraw {}; class garageLBChange {}; class impoundMenu {}; class progressBar {}; class safeFix {}; class safeInventory {}; class safeInventoryBank {}; //Add this class safeOpen {}; class safeOpenBank {}; //Add this class safeTake {}; class safeTakeBank {}; //Add this class sellGarage {}; class setMapPosition {}; class spawnConfirm {}; class spawnMenu {}; class spawnPointCfg {}; class spawnPointSelected {}; class unimpound {}; class vehicleGarage {}; class wireTransfer {}; }; 7. missionname.altis >> dialog >> federalReserve.hpp Add at the bottom of the file class Federal_Safe_1 { idd = 6666; name = "Federal_Safe_1"; movingEnable = 0; enableSimulation = 1; class controlsBackground { class RscTitleBackground: Life_RscText { colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; idc = -1; x = 0.1; y = 0.2; w = 0.33; h = (1 / 25); }; class RscBackground: Life_RscText { colorBackground[] = {0, 0, 0, 0.7}; idc = -1; x = 0.1; y = 0.2 + (11 / 250); w = 0.33; h = 0.7 - (22 / 250); }; class RscTitleText: Life_RscTitle { colorBackground[] = {0, 0, 0, 0}; idc = 3501; text = ""; x = 0.1; y = 0.2; w = 0.33; h = (1 / 25); }; class VehicleWeight : RscTitleText { idc = 3504; style = 1; text = ""; }; class RscTrunkText: Life_RscText { idc = -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}; text = "$STR_Trunk_TInventory"; sizeEx = 0.04; x = 0.11; y = 0.25; w = 0.3; h = 0.04; }; }; class Controls { class TrunkGear: Life_RscListBox { idc = 6669; text = ""; sizeEx = 0.030; x = 0.11; y = 0.29; w = 0.3; h = 0.42; }; class TrunkEdit: Life_RscEdit { idc = 6662; text = "1"; sizeEx = 0.030; x = 0.11; y = 0.72; w = 0.3; h = 0.03; }; class TakeItem: Life_RscButtonMenu { idc = -1; text = "$STR_Trunk_Take"; 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_safeTakeBank;"; x = 0.19; y = 0.78; w = (6.25 / 40); h = (1 / 25); }; class ButtonClose: Life_RscButtonMenu { idc = -1; //shortcuts[] = {0x00050000 + 2}; text = "$STR_Global_Close"; onButtonClick = "closeDialog 0;"; x = 0.1; y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; }; }; 8. CentralBank.zip Grab the zip file attached and place the files in thew corresponding folders, every file shows where it is meant to go! 9. missionname.altis >> core >> pmenu >> fn_useItem.sqf In the file add this under: case (_item isEqualTo "blastingcharge"): { player reveal fed_bank; (group player) reveal fed_bank; [cursorObject] spawn life_fnc_blastingCharge; closeDialog 0; }; Add: case (_item isEqualTo "codeCracker"): { player reveal fed_bank_1; (group player) reveal fed_bank_1; [cursorObject] spawn life_fnc_codeCracker; closeDialog 0; }; 10. missionname.altis >> functions.hpp Add to the items class: class codeCracker {}; Life_Server Edits: 1. life_server >> init.sqf Under the line "fed_bank setVariable ["safe",count playableUnits,true];" add fed_bank_1 setVariable ["safe",count playableUnits,true]; 2. life_server >> config.cpp Under "Class Systems" add class handleBlastingChargeBank {}; Should look like this: class Systems { file = "\life_server\Functions\Systems"; class managesc {}; class cleanup {}; class huntingZone {}; class getID {}; class vehicleCreate {}; class spawnVehicle {}; class getVehicles {}; class vehicleStore {}; class vehicleDelete {}; class spikeStrip {}; class transferOwnership {}; class federalUpdate {}; class chopShopSell {}; class clientDisconnect {}; class cleanupRequest {}; class setObjVar {}; class keyManagement {}; class vehicleUpdate {}; class recupkeyforHC {}; class handleBlastingCharge {}; class handleBlastingChargeBank {}; //Add this }; 3. life_server >> Functions >> Systems >> federalUpdate.sqf Under line "_funds = fed_bank getVariable ["safe",0];" add _bfunds = fed_bank_1 getVariable ["safe",0]; 4. life_server >> Functions >> Systems >> federalUpdate.sqf Under line "fed_bank setVariable ["safe",round(_funds+((count playableUnits)/2)),true];" add fed_bank_1 setVariable ["safe",round(_bfunds+((count playableUnits)/5)),true]; 5. CentralBank.zip Same as before add the marked "life_server" files from the zip into the corresponding folders. "mission.sqf" Edits: 1. Create an object "Land_CargoBox_V1_F" this allowDamage false; this enableSimulation false; this addAction[localize""STR_MAR_Open_Vault"",life_fnc_safeOpenBank,"""",0,false,false,"""",' playerSide isEqualTo civilian && {_target getVariable [""safe_open"",false]} ']; this addAction[localize""STR_MAR_Fix_Vault"",life_fnc_safeFix,"""",0,false,false,"""",' playerSide isEqualTo west && {_target getVariable [""safe_open"",false]} ' ]; NOTE: DON'T FORGET TO MAKE A MARKER SO PEOPLE KNOW WHERE THE BANK IS! SORRY RAN OUT OF SPACE I'LL ADD THE COUNTERFITCASH SHOP IN THE COMMENTS! CenteralBank.zip
  2. Welcome Today I will be providing the community with a project I have been working on for a while The Altis Life Bounty Hunters Please not that I have been coding this at times when I have been extremely tired so if any problems occur just message me or tag me in your comment I tried to make this as easy as possible for those who do not want to learn how the code is written. I would like to thank TONIC for providing me with the wantedSystem framework to go off. Fresqo who provided the fn_markers.sqf script BoGuu and Alaskavet for being there when I needed some assistance. Difficulty: EASY PEASY Version: Altis Life 4.4 R3 Let's Get Started!!! 1: Download the zip attached, All files I will be using are inside that zip. 2: missionname >> stringtable.xml find somewhere to put a new package, add: <Package name="Bounty"> <Key ID="STR_Bounty_5000"> <Original>$5,000</Original> </Key> <Key ID="STR_Bounty_10000"> <Original>$10,000</Original> </Key> <Key ID="STR_Bounty_15000"> <Original>$15,000</Original> </Key> <Key ID="STR_Bounty_20000"> <Original>$20,000</Original> </Key> <Key ID="STR_Bounty_25000"> <Original>$25,000</Original> </Key> <Key ID="STR_Bounty_30000"> <Original>$30,000</Original> </Key> <Key ID="STR_Bounty_35000"> <Original>$35,000</Original> </Key> <Key ID="STR_Bounty_40000"> <Original>$40,000</Original> </Key> <Key ID="STR_Bounty_45000"> <Original>$45,000</Original> </Key> <Key ID="STR_Bounty_50000"> <Original>$50,000</Original> </Key> <Key ID="STR_Bounty_55000"> <Original>$55,000</Original> </Key> <Key ID="STR_Bounty_60000"> <Original>$60,000</Original> </Key> <Key ID="STR_Bounty_65000"> <Original>$65,000</Original> </Key> <Key ID="STR_Bounty_70000"> <Original>$70,000</Original> </Key> <Key ID="STR_Bounty_75000"> <Original>$75,000</Original> </Key> <Key ID="STR_Bounty_80000"> <Original>$80,000</Original> </Key> <Key ID="STR_Bounty_85000"> <Original>$85,000</Original> </Key> <Key ID="STR_Bounty_90000"> <Original>$90,000</Original> </Key> <Key ID="STR_Bounty_95000"> <Original>$95,000</Original> </Key> <Key ID="STR_Bounty_100000"> <Original>$100,000</Original> </Key> <Key ID="STR_Bounty_200000"> <Original>$200,000</Original> </Key> <Key ID="STR_Bounty_300000"> <Original>$300,000</Original> </Key> <Key ID="STR_Bounty_400000"> <Original>$400,000</Original> </Key> <Key ID="STR_Bounty_500000"> <Original>$500,000</Original> </Key> <Key ID="STR_Bounty_1000000"> <Original>$1,000,000</Original> </Key> <Key ID="STR_Bounty_AddP"> <Original>%1 has been added to the bounty list, he was added for $%2 this has risen he current bounty price to $%3. The last known location has been marked on the map for all bounty hunting units. Normal declaration rules still apply, RDM will be delt with.</Original> </Key> <Key ID="STR_MAR_bountyW"> <Original>Bounty Hunters Armory</Original> </Key> <Key ID="STR_MAR_bounty"> <Original>Bounty Hunters HQ</Original> </Key> <Key ID="STR_GNOTF_BountyMSG"> <Original>You are about to buy a 'Bounty Hunting License' buying this license will give you access to the Bounty Hunters Database, kill someone on the list to get thier bounty! Normal declaration still applys, you can NOT RDM! Do you accept these terms and conditions?</Original> </Key> <Key ID="STR_bounty_bountyList_notBH"> <Original>You are not a civilian, only civilians can add people to the bounty list! I suggest you leave!</Original> </Key> <Key ID="STR_bounty_bountyList_noPlayerSelected"> <Original>No player on the list was selected! Please select a player.</Original> </Key> <Key ID="STR_bounty_bountyList_noAmountSelected"> <Original>No amount was selected, use the drop down menu to select a bounty amount.</Original> </Key> <Key ID="STR_Bounty_BountyKill"> <Original>You have collected a bounty of $%1 for killing someone on the bounty list, nice job!</Original> </Key> <Key ID="STR_Bounty_Title"> <Original>Bounty List</Original> </Key> <Key ID="STR_BountyA_Title"> <Original>Bounty Hunting Database</Original> </Key> <Key ID="STR_Bounty_License"> <Original>Bounty License</Original> </Key> <Key ID="STR_License_bountyH"> <Original>Bounty Hunter</Original> </Key> </Package> 3. missionname >> functions.hpp Add: class BountyHunters { file = "core\BountyHunters"; class bountyAddMenu {}; class bountyAddP {}; class bountyBuy {}; class bountyGrab {}; class bountyHunterReceive {}; class bountyInfo {}; class bountyKill {}; class bountyList {}; class bountyMenu {}; class markers {}; }; 4. missionname >> CfgRemoteExec.hpp Add: In the Right Areas F(life_fnc_bountyHunterReceive,CLIENT)//Bountyhunter F(life_fnc_bountyList,CLIENT)//Bountyhunter F(life_fnc_markers,CLIENT)//Bountyhunter F(life_fnc_bountyReceive,CLIENT)//Bountyhunter F(life_fnc_bountyAdd,SERVER)//Bountyhunter F(life_fnc_amountBounty,SERVER)//Bountyhunter F(life_fnc_bountyFetch,SERVER)//Bountyhunter F(life_fnc_bountyPerson,SERVER)//Bountyhunter F(life_fnc_bountyProfUpdate,SERVER)//Bountyhunter F(life_fnc_bountyRemove,SERVER)//Bountyhunter F(life_fnc_bountyAlter,SERVER)//Bountyhunter F(life_fnc_bountyCrimes,SERVER)//Bountyhunter F(life_fnc_bountyAmountGather,SERVER)//Bountyhunter 5. missionname >> config >> config_license Add: class bountyH { variable = "bountyH"; displayName = "STR_License_bountyH"; price = 100000; illegal = false; side = "civ"; }; 6. missionname >> config >> Master_config Add under the crimes array: /* Bounty System Settings * /* bountys[] = {string, amount, code} */ bountys[] = { {"STR_Bounty_5000", "5000", "1B"}, {"STR_Bounty_10000", "10000", "2B"}, {"STR_Bounty_15000", "15000", "3B"}, {"STR_Bounty_20000", "20000", "4B"}, {"STR_Bounty_25000", "25000", "5B"}, {"STR_Bounty_30000", "30000", "6B"}, {"STR_Bounty_35000", "35000", "7B"}, {"STR_Bounty_40000", "40000", "8B"}, {"STR_Bounty_45000", "45000", "9B"}, {"STR_Bounty_50000", "50000", "10B"}, {"STR_Bounty_55000", "55000", "11B"}, {"STR_Bounty_60000", "60000", "12B"}, {"STR_Bounty_65000", "65000", "13B"}, {"STR_Bounty_70000", "70000", "14B"}, {"STR_Bounty_75000", "75000", "15B"}, {"STR_Bounty_80000", "80000", "16B"}, {"STR_Bounty_85000", "85000", "17B"}, {"STR_Bounty_90000", "90000", "18B"}, {"STR_Bounty_95000", "95000", "19B"}, {"STR_Bounty_100000", "100000", "20B"}, {"STR_Bounty_200000", "200000", "21B"}, {"STR_Bounty_300000", "300000", "22B"}, {"STR_Bounty_400000", "400000", "23B"}, {"STR_Bounty_500000", "500000", "24B"}, {"STR_Bounty_1000000", "1000000", "25B"} }; 7. missionname >> core >> medical >> fn_onPlayerKilled.sqf Underneath the last player set variable add: private _BountyPeeps = []; { if (license_civ_bountyH) then {_BountyPeeps pushBack _x}; } forEach playableUnits; Then under: //Killed by cop stuff... if (side _killer isEqualTo west && playerSide != west) then { life_copRecieve = _killer; //Did I rob the federal reserve? if (!life_use_atm && {CASH > 0}) then { [format [localize "STR_Cop_RobberDead",[CASH] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; CASH = 0; }; }; Add: if (side _killer isEqualTo civilian && {_killer != _unit}) then { if (_killer in _BountyPeeps) then { life_bountyHunter = _killer; }; }; if (!isNull _killer) then { life_removeBounty = true; }; 8. Grab the files in the zip file and place them in the respected folders. 9. missionname >> dialog >> masterhandler Add: #include "bounty_list.hpp" #include "bounty_addList.hpp" 10. missionname >> core >> configuration Add under Backend variables life_removeBounty = false; 11. missionname >> core >> pmenu >> fn_p_openMenu Add under case west: ctrlShow[9696,false]; ctrlShow[9898,false] Add under case Civ: ctrlShow[9696,true]; ctrlShow[9898,true] Add under case med: ctrlShow[9696,false]; ctrlShow[9898,false] NOTE: The numbers are what you guys id you bountyList button as, I have two because I have the button and an icon, you may only have 1!!! 12. missionname >> core >> medical >> fn_respawned.sqf Under: //Johnny law got me but didn't let the EMS revive me, reward them half the bounty. if (!isNil "life_copRecieve") then { if (life_HC_isActive) then { [getPlayerUID player,player,life_copRecieve,true] remoteExecCall ["HC_fnc_wantedBounty",HC_Life]; } else { [getPlayerUID player,player,life_copRecieve,true] remoteExecCall ["life_fnc_wantedBounty",RSERV]; }; life_copRecieve = nil; }; Add: if (!isNil "life_bountyHunter") then { if (life_HC_isActive) then { [getPlayerUID player,player,life_bountyHunter] remoteExecCall ["HC_fnc_amountBounty",HC_Life]; } else { [getPlayerUID player,player,life_bountyHunter] remoteExecCall ["life_fnc_amountBounty",RSERV]; }; life_bountyHunter = nil; }; //Remove Bounty... if (life_removeBounty) then { if (life_HC_isActive) then { [getPlayerUID player] remoteExecCall ["HC_fnc_bountyRemove",HC_Life]; } else { [getPlayerUID player] remoteExecCall ["life_fnc_bountyRemove",RSERV]; }; }; 13. missionname >> core >> civilian >> fn_removeLicense Add this case: //Adds the bountyH license to civs case 100: { missionNamespace setVariable [LICENSE_VARNAME("bountyH","civ"),true]; }; 14. missionname >> core >> init.sqf Under if (life_HC_isActive) then { [getPlayerUID player,player getVariable ["realname",name player]] remoteExec ["HC_fnc_wantedProfUpdate",HC_Life]; } else { [getPlayerUID player,player getVariable ["realname",name player]] remoteExec ["life_fnc_wantedProfUpdate",RSERV]; }; Add: if (life_HC_isActive) then { [getPlayerUID player,player getVariable ["realname",name player]] remoteExec ["HC_fnc_bountyProfUpdate",HC_Life]; } else { [getPlayerUID player,player getVariable ["realname",name player]] remoteExec ["life_fnc_bountyProfUpdate",RSERV]; }; life_server edits: 1. life_server >> config.cpp Add under life tag above class Jail_Sys: //Bounty Hunter class Bounty_Sys { file = "\life_server\Functions\BountySystem"; class amountBounty {}; class bountyRemove {}; class bountyAdd {}; class bountyFetch {}; class bountyProfUpdate {}; class bountyCrimes {}; class bountyAmountGather {}; }; 2. Place the bountyFiles life_server side into the folders. 3. life_server >> init.sqf Under: life_wanted_list = []; Add: life_bounty_list = []; mission.sqf edits: 1. Create the NPC: Inside the NPC you created add this: this enableSimulation false; this allowDamage false; this addAction ["Bounty Hunting ($100,000)", life_fnc_bountyBuy,"",0,false,false,"",' !license_civ_bountyH && playerSide isEqualTo civilian']; this addAction["<t color = '#D660D6'>Bounty Add</t>",life_fnc_bountyAddMenu,"",0,false,false,"",'']; this addAction["<t color = '#E6F402'>Bounty List</t>",life_fnc_bountyMenu,"",0,false,false,"",'']; NOTE: This is the code taken from my mission.sqm file, if you paste that into the editor it WILL NOT work, you have to remove the extra " in the line, there should only be two " " not four. DATABASE EDIT: 1. Make a new query and run this code: USE `altislife`; CREATE TABLE `bounty` ( `bountyID` varchar(64) NOT NULL, `bountyName` varchar(32) NOT NULL, `bounty` int(100) NOT NULL, `insert_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`bountyID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; Then Place folders in the right spot and your good to go. Now we SHOULD be finished... Any problems tag me in your comment and I'll reply to them ASAP I don't think i forgot anything. BountyHunter.rar
  3. Altis Zipties I have noticed that many people have been trying to use the current zipties on this forum and have had many problems, with my zipties I intend to shorten the install time and make the script work for everyone {excluding AL v3.1.4.8} In my zipties script, we have the interaction menu, blindfold, gag, and a separate variable so civilians can NOT unrestrain someone who was restrained by a police officer. Let's get started. 1. Inside the functions.hpp file add: class CivTieing { file = "core\civilian\CivTieing"; class gagAction {}; class gagged {}; class removeGagAction {}; class tieing {}; class tieingAction {}; class tieingActionb {}; class tieingb {}; class untie {}; class untieb {}; }; 2. Inside the file core > functions > actionKeyHandler find: if (player getVariable ["isEscorting",false]) exitWith { [] call life_fnc_copInteractionMenu; }; And under add: if (playerSide isEqualTo civilian && {player getVariable ["isEscorting",false]} && (!(_curObject getVariable ["restrained",false]))) exitWith { [] call life_fnc_copInteractionMenu; }; 3. Inside the same file as above find: if ((_curObject getVariable ["restrained",false]) && !dialog && playerSide isEqualTo west) then { [_curObject] call life_fnc_copInteractionMenu; }; And under it add: if ((!(_curObject getVariable ["restrained",false])) && !dialog && playerSide isEqualTo civilian) then { [_curObject] call life_fnc_copInteractionMenu; }; 4. Inside CfgRemoteExec add: F(life_fnc_tieing,CLIENT) F(life_fnc_tieingb,CLIENT) F(life_fnc_gagged,CLIENT) 5. Inside config_vItems add this where you items are created, NOTE: You will need to add them to the shops you want them in! class zipties { variable = "zipties"; displayName = "STR_Item_ZipTies"; weight = 0; buyPrice = 1200; sellPrice = -1; illegal = true; edible = -1; icon = "icons\ziptie.paa"; }; class blindfold { variable = "blindfold"; displayName = "STR_Item_Blindfold"; weight = 0; buyPrice = 600; sellPrice = -1; illegal = true; edible = -1; icon = "icons\blindfold.paa"; }; 6. In the file core > actions > escortAction comment out line 13 (The playerSide check) 6.2 In the file core > actions > stopEscort comment out line 14 (The playerSide check) 7. In the file core > actions > unRestrain under: _unit setVariable ["transporting",FALSE,TRUE]; Add: _unit setVariable["tied", nil, true]; _unit setVariable["gagged",false,true]; _unit setVariable["blindfolded", nil, true]; 8. Inside the stringtable.xml add: <Key ID="STR_Item_ZipTies"> <Original>ZipTies</Original> </Key> <Key ID="STR_Item_Blindfold"> <Original>Blindfold</Original> </Key> 9. This is the difficult bit, inside the file core > cop > copInteractionMenu from line 46 replace it with: switch (playerSide) do { case west: { if (player getVariable ["isEscorting",false]) then { { _x ctrlShow false; } forEach [_Btn1,_Btn2,_Btn3,_Btn5,_Btn6,_Btn7,_Btn8]; }; //Set Unrestrain Button _Btn1 ctrlSetText localize "STR_pInAct_Unrestrain"; _Btn1 buttonSetAction "[life_pInact_curTarget] call life_fnc_unrestrain; closeDialog 0;"; //Set Check Licenses Button _Btn2 ctrlSetText localize "STR_pInAct_checkLicenses"; _Btn2 buttonSetAction "[player] remoteExecCall [""life_fnc_licenseCheck"",life_pInact_curTarget]; closeDialog 0;"; //Set Search Button _Btn3 ctrlSetText localize "STR_pInAct_SearchPlayer"; _Btn3 buttonSetAction "[life_pInact_curTarget] spawn life_fnc_searchAction; closeDialog 0;"; //Set Escort Button if (player getVariable ["isEscorting",false]) then { _Btn4 ctrlSetText localize "STR_pInAct_StopEscort"; _Btn4 buttonSetAction "[] call life_fnc_stopEscorting; closeDialog 0;"; } else { _Btn4 ctrlSetText localize "STR_pInAct_Escort"; _Btn4 buttonSetAction "[life_pInact_curTarget] call life_fnc_escortAction; closeDialog 0;"; }; //Set Ticket Button _Btn5 ctrlSetText localize "STR_pInAct_TicketBtn"; _Btn5 buttonSetAction "[life_pInact_curTarget] call life_fnc_ticketAction;"; _Btn6 ctrlSetText localize "STR_pInAct_Arrest"; _Btn6 buttonSetAction "[life_pInact_curTarget] call life_fnc_arrestAction; closeDialog 0;"; _Btn6 ctrlEnable false; _Btn7 ctrlSetText localize "STR_pInAct_PutInCar"; _Btn7 buttonSetAction "[life_pInact_curTarget] call life_fnc_putInCar; closeDialog 0;"; //SeizeWeapons Button _Btn8 ctrlSetText localize "STR_pInAct_Seize"; _Btn8 buttonSetAction "[life_pInact_curTarget] spawn life_fnc_seizePlayerAction; closeDialog 0;"; if (FETCH_CONST(life_coplevel) < _seizeRank) then {_Btn8 ctrlEnable false;}; { if ((player distance (getMarkerPos _x) <30)) exitWith { _Btn6 ctrlEnable true;}; } forEach LIFE_SETTINGS(getArray,"sendtoJail_locations"); }; case civilian: { if (player getVariable ["isEscorting",false]) then { { _x ctrlShow false; } forEach [_Btn1,_Btn2,_Btn4,_Btn5,_Btn6]; }; if (player getVariable ["isEscorting",false]) then { _Btn3 ctrlSetText localize "STR_pInAct_StopEscort"; _Btn3 buttonSetAction "[] call life_fnc_stopEscorting; closeDialog 0;"; } else { _Btn3 ctrlSetText localize "STR_pInAct_Escort"; _Btn3 buttonSetAction "[life_pInact_curTarget] call life_fnc_escortAction; closeDialog 0;"; }; _Btn4 ctrlSetText localize "STR_pInAct_PutInCar"; _Btn4 buttonSetAction "[life_pInact_curTarget] call life_fnc_putInCar;"; //SeizeWeapons Button _Btn5 ctrlSetText localize "STR_pInAct_Seize"; _Btn5 buttonSetAction "[life_pInact_curTarget] spawn life_fnc_seizePlayerAction; closeDialog 0;"; if ((_curTarget getVariable ["blindfolded", false])) then { _Btn2 ctrlSetText "Remove blindfold"; _Btn2 buttonSetAction "[] call life_fnc_untieb; closeDialog 0;"; } else { _Btn2 ctrlSetText "Blindfold Person"; _Btn2 buttonSetAction "[] call life_fnc_tieingActionb; closeDialog 0;"; }; if ((_curTarget getVariable ["gagged", false])) then { _Btn6 ctrlSetText "Remove Gag"; _Btn6 buttonSetAction "[] call life_fnc_removeGagAction; closeDialog 0;"; } else { _Btn6 ctrlSetText "Gag Person"; _Btn6 buttonSetAction "[] call life_fnc_gagAction; closeDialog 0;"; }; if (!(_curTarget getVariable ["tied", false])) then { _Btn1 ctrlSetText "Ziptie Person"; _Btn1 buttonSetAction "[] call life_fnc_tieingAction; closeDialog 0;"; _Btn2 ctrlEnable false; _Btn3 ctrlEnable false; _Btn4 ctrlEnable false; _Btn5 ctrlEnable false; _Btn6 ctrlEnable false; } else { _Btn1 ctrlSetText "Remove Zipties"; _Btn1 buttonSetAction "[] call life_fnc_untie; closeDialog 0;"; }; if (player getVariable ["isEscorting",false]) then { { _x ctrlShow false; } forEach [_Btn1,_Btn2,_Btn4,_Btn5,_Btn6]; _Btn3 ctrlEnable true; }; _Btn7 ctrlShow false; _Btn8 ctrlShow false; }; }; If you had any custom buttons inside that file make sure to re-implement them! The final step it to download the Zip below and insert them into their respective places. Kind thanks to @lowheartrate @Panda For providing the Gag scripts. If you have any questions please TAG me in them DO NOT quote the whole tutorial. CivRestraining.zip
  4. [Tutorial] Patdown Player + Seize Objects

    Today I will be sharing 2 scripts with the community, one I made myself, one I cannot find the original author for, If the original author for the SeizeObjects script would like to come forward I will put them as the right full owner. Many people have been asking for a patdown script so i will introduce one today. NOTE: People on 4.4r3 will only have to edit the file "seizeClient" for the patdown. People not using 4.4r3 will have to follow all steps. Step 1: Go to core>>actions and create a file called "fn_seizePlayerAction.sqf" inside #include "..\..\script_macros.hpp" /* File: fn_seizePlayerAction.sqf Author: Bryan "Tonic" Boardwine Description: Starts the seize process.. Based off Tonic's fn_searchAction.sqf */ params [ ["_unit",objNull,[objNull]] ]; if (isNull _unit) exitWith {}; sleep 2; if (player distance _unit > 5 || !alive player || !alive _unit) exitWith {hint localize "STR_NOTF_CannotSeizePerson"}; [player] remoteExec ["life_fnc_seizeClient",_unit]; life_action_inUse = false; NOTE: That script is Tonics 4.4r3 framework. Just calls the patdown script. Step 2: Go to core>>cop and create a file called "fn_seizeClient.sqf" inside /* Author: !TS JORDAN For: AltisLifeRPG Community Description: Takes a players weapons and mags, then drops them on the ground. */ private["_hgItems","_holder","_items","_pwItems","_safeItems","_swItems","_weps","_unit"]; _safeItems = ["FirstAidKit","ItemRadio","ItemMap","ItemCompass","ItemGPS","ItemWatch","NVGoggles","Rangefinder","Binocular"]; _unit = player; [_unit,"patdown"] remoteExec ["life_fnc_say3D",RANY]; titleText[localize "Your weapons are removed.","PLAIN"]; _weps = []; _pwItems = primaryWeaponItems player; _swItems = secondaryWeaponItems player; _hgitems = handGunItems player; _mags = magazinesAmmoFull player; {player removeMagazine _x} foreach (magazines player); if(primaryWeapon player != "") then { _weps pushBack (primaryWeapon player); player removeWeapon (primaryWeapon player); }; if(secondaryWeapon player != "") then { _weps pushBack (secondaryWeapon player); player removeWeapon (secondaryWeapon player); }; if(handgunWeapon player != "") then { _weps pushBack (handgunWeapon player); player removeWeapon (handgunWeapon player); }; { _items = _x; { player unassignItem _x; player removeItem _x; }forEach _items; }forEach [_hgItems, _pwItems, _swItems]; { if (!(_x in _safeItems)) then { player removeItem _x; _weps pushBack _x; }; }forEach (weapons player); _holder = createVehicle [ "GroundWeaponHolder", getPosATL player, [], 0, "CAN_COLLIDE" ]; { _holder addWeaponCargoGlobal [_x,1]; }forEach _weps; { _holder addMagazineCargoGlobal [_x select 0,1]; }forEach _mags; { _items = _x; { _holder addItemCargoGlobal [_x,1]; }forEach _items; }forEach [_hgItems, _pwItems, _swItems]; call life_fnc_saveGear; Step 3: Go to core>>cop and create a file called "fn_seizeObjects.sqf" inside /* BLAH BLAH */ _clear = nearestObjects [player,["weaponholder"],3]; _clear = _clear + nearestObjects [player,["GroundWeaponHolder"],3]; _clear = _clear + nearestObjects [player,["WeaponHolderSimulated"],3]; _destroyed = 0; for "_i" from 0 to count _clear - 1 do { _destroyed = _destroyed + 1; deleteVehicle (_clear select _i); }; titleText[format["Seized %1 ground objects in the vicinity.", _destroyed],"PLAIN"]; Step 4: Go to core>>cop>>copInteractionMenu.sqf and add //SeizeWeapons Button _Btn8 ctrlSetText localize "STR_pInAct_Seize"; _Btn8 buttonSetAction "[life_pInact_curTarget] spawn life_fnc_seizePlayerAction; closeDialog 0;";. NOTE: Some people may already have button 8 in use. Just add the extra button in the dialog and define them further up in copInteractionMenu Step 5: Go to functions.hpp (root folder) add under actions class class seizePlayerAction {}; add under cop class class seizeObjects {}; class seizeClient {}; Step 6: Go to CfgRemoteExec.hpp and add under client functions F(life_fnc_seizeClient,CLIENT) F(life_fnc_seizeObjects,CLIENT) Step 7: Go to core>>setupActions.sqf under switch (playerSide) do { case civilian: { You're actions are here }; add case west: { life_actions pushBack (player addAction["Seize Objects",life_fnc_seizeObjects,cursorTarget,0,false,false,"",'((count(nearestObjects [player,["WeaponHolder"],3])>0) || (count(nearestObjects [player,["GroundWeaponHolder"],3])>0) || (count(nearestObjects [player,["WeaponHolderSimulated"],3])>0))']); }; Step 8: Go to stringtable.xml and add <Key ID="STR_pInAct_Seize"> <Original>Seize Weapons</Original> <Czech>zabavili zbraně</Czech> <Spanish>Confiscar Armas</Spanish> <Russian></Russian> <German>Seize Waffen</German> <French>Saisir les armes</French> <Italian>cogliere Armi</Italian> <Portuguese>Apreender Armas</Portuguese> <Polish>Chwytaj broń</Polish> </Key> And we are done. I don't think I missed anything if I did then well comment and ill fix it up. Enjoy your day.
  5. It doesn't matter too much because if they are not created when I fetch the var it defaults to false... Read the wiki? https://community.bistudio.com/wiki/getVariable
  6. Did you add the array to the masterConfig?
  7. Change the colorCorrection
  8. There is a fix, its the addAction not working to well, I think its one of my comments on page 3 or 4? I set a variable, just have a quick look
  9. What code are you using to exec the the script? If so just pasting it at the bottom of the uniteb script should work....
  10. [Tutorial] Altis Central Bank - Second Fed!

    Your mission seems fine just ignore the error and try it
  11. [Tutorial] Altis Central Bank - Second Fed!

    Now paste your mission.sqm now paste your mission.sqm
  12. [Tutorial] Altis Central Bank - Second Fed!

    Its the double "" you just have to minus one from each side.
  13. [Tutorial] Altis Central Bank - Second Fed!

    paste your life init file please
  14. [Tutorial] Altis Central Bank - Second Fed!

  15. [Tutorial] Altis Central Bank - Second Fed!

    have you placed the box down ? if so make sure it is called fed_bank_1
  16. [Tutorial] Altis Central Bank - Second Fed!

    Its the dialogs, they are all attached to the desc, go the the dialog > federalreserve.hpp and look for the missing }
  17. hmm is it a script that makes the color thing there? If so just run the script at the end of the un blindfold script
  18. Try changing core > function > fn_pullOutVeh to this : /* File: fn_pullOutVeh.sqf Author: Bryan "Tonic" Boardwine Description: */ if (pisNull objectParent player) exitWith {}; if (player getVariable "restrained") then { detach player; player setVariable ["Escorting",false,true]; player setVariable ["transporting",false,true]; life_disable_getOut = false; player action ["Eject", vehicle player]; titleText[localize "STR_NOTF_PulledOut","PLAIN"]; titleFadeOut 4; life_disable_getIn = true; } else { if (player getVariable "tied") then { detach player; player setVariable ["Escorting",false,true]; player setVariable ["transporting",false,true]; life_disable_getOut = false; player action ["Eject", vehicle player]; titleText[localize "STR_NOTF_PulledOut","PLAIN"]; titleFadeOut 4; life_disable_getIn = true; } else { player action ["Eject", vehicle player]; titleText[localize "STR_NOTF_PulledOut","PLAIN"]; titleFadeOut 4; }; };
  19. [Tutorial] Altis Central Bank - Second Fed!

    The script may be outdated now.
  20. Have you installed the other ziptie script? PM Me.
  21. As far as I can see all the errors and fixes are only for certain people, so updating the main post would be unnecessary. In addition reading through all the pages I cannot find any "fixes" that are shouting out to me, it is mostly just people sending me files back and fourth. What is your problem? Maybe I can help in a 1 on 1 way.
  22. Cop-Gate Opener

    Nahh, dont fix something that aint broke
  23. [Tutorial] Patdown Player + Seize Objects

    @immortalchaos Please just read previous comments next time, someone may of asked the same question :))
  24. Cop-Gate Opener

    It will still work... the other case 24 just checks for the shift input...
  25. I'll do it when i get home