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 04/22/2017 in all areas

  1. 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
  2. 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 #%!#*^.
  3. 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.
  4. 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>*/
  5. 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
  6. 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
  7. 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)
  8. 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.
  9. 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
  10. 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:
  11. 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!
  12. 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];
  13. 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
  14. 1 like
    This isn't the error, just translate from French to English. He have more errors on file, so he needs fix them too An advice, if you're using Framework v5, uses extDB3 instead extDB2. Much better ^^ extDB2 is for v4.4R4 and belows.
  15. 1 like
    [Database] need to be altislife [altislife] IP = 127.0.0.1 Port = 3306 Username = altislife Password = 123 Database = altislife
  16. 1 like
    Make sure in your description.ext you have set the correct name e.g DatabaseName = "altislife"; <<<<<<<< Here Then in your extdb3 config ini it should look like this [altislife] <<<<<< Here IP = 127.0.0.1 Port = 3306 Username = ****** Password = ****** Database = altislife <<<<<<<<< Here And finally your database needs to be called altislife but either way all the names need to be the same and extdb3 should work.
  17. 1 like
    This is a simple guide on how to add the feature of having new civilians spawn with hats, backpacks, vests, etc. It's extremely simple. 1. Go to fn_civLoadout.sqf 2. Open it, replace it with this, or view the code below and make changes where necessary: /* File: fn_civLoadout.sqf Author: Tobias 'Xetoxyc' Sittenauer Edited by Repentz to add custom clothing Description: Loads the civs out with the default gear, with randomized clothing / */ private ["_handle"]; _handle = [] spawn life_fnc_stripDownPlayer; waitUntil {scriptDone _handle}; _clothings = ["U_C_Poloshirt_blue","U_C_Poloshirt_burgundy","U_C_Poloshirt_stripped","U_C_Poloshirt_tricolour","U_C_Poloshirt_salmon","U_C_Poloshirt_redwhite","U_C_Commoner1_1"]; /* Start Repentz */ _repentzHat = ["H_Booniehat_dirty","H_Booniehat_grn","H_Cap_blu"]; _repentzBackpack = ["B_TacticalPack_blk","B_Kitbag_rgr"]; _repentzVest = ["V_Press_F","V_I_G_resistanceLeader_F"]; player addHeadgear (selectRandom _repentzHat); player addBackpack (selectRandom _repentzBackpack); player addVest (selectRandom _repentzVest); /* End Repentz */ player addUniform (selectRandom _clothings); /* ITEMS */ player linkItem "ItemMap"; player linkItem "ItemCompass"; [] call life_fnc_playerSkins; [] call life_fnc_saveGear; You can add as many classnames as you want to the variables for example ,"H_Cap_blu","new classname of hat"
  18. 1 like
    Wackaflackaflame nice work mate l3monkiwi on discord btw ^
  19. 1 like
    IIRC, Items with _Exp_ in the class are from Apex... to join a server using Apex items, you must own the DLC, it is not like the others. To fix... remove the objects from Apex or tell him to buy Apex. Rather than using %appdata% and going back, you can just use %localappdata%
  20. 1 like
    You can ignore the error, when you run the function is resets the 'placeable' variable to prevent bugs when placing new stuff and removing. But the first time you run it there is nothing down yet so it errors if you wanted you could put "placeable = "";" in your init.sqf to stop it from happening.
  21. 1 like
    I have found out the problem and now I can edit it from the Eden editor. I found my solution here for anyone that stumbles across the thread
  22. 1 like
    don't bash his server mann, this is an advertisement section
  23. 1 like
    I've made a few textures during my time on Altis Life, they're not in use any more so I figured why not share here. The textures include my rendition of UK police uniforms and vehicles, along with a few medic vehicles. Here's an album of said textures (class names for uniforms included) Download is attached to this post, enjoy! Textures.rar
  24. 1 like
    bottom of the screen in the middle
  25. 1 like
    uh ah im gonna report this... (what exactly?) no one gives a shit about your precious textures... so dont wet your pants kid...
  26. 1 like
    Actually its German not Danish but thanks for the comment
  27. 1 like
    Hallo Liebe Arma 3 Spieler, Wir sind ein Lakeside Modserver auf der Karte Jackson County der von zwei Administratoren und zwei Supportern aufgebaut wird. Unser Support schaft es fast jedes Problem zu lösen da die hälfte unseres Teams aus experten in verschiedenen gebieten der IT besteht die in solchen berufen Tätig sind. Unser Gameserver als auch der Teamspeak laufen auf einen Leistungsstartken Root Server mir Gigabyte anbindung. Wir haben erst vor kurzem von der Lakeside Karte auf Jackson County gewechselt und haben nun auch ein nicht öffentlich verfügbares exclusives Modpack mit Task Force Radio. Dieses beinhaltet viele Fahrzeuge die einzigartig in diesem Mod sind und wir versuchen im Ramen dieses Modpacks möglichst genau auf die Wünsche unserer User einzugehen. Uns ist Roleplay besonders wichtig deshalb gibt es Spezialregeln bei der Strafabwicklung zwischen Civis und Cops. Wenn ein Zivilist z.B. besonders gutes Roleplay macht und sich eine einzigartige Geschichte ausdenkt sind die Polizisten dazu veranlasst die Strafe drastisch zu verringern oder sogar auszusetzen. An jede Fraktion ist gedacht und jede beinhaltet coole Features. Medics ist es z.B. möglich eine Krankenliege aus ihrem Krankenwagen zu holen um damit schwer verletzte Personen abzutransportieren. Diese kann man dann in den Krankenwagen verladen und der Pazient darauf ins Krankenhaus transportiern. Kontakt Teamspeak: Heros-Life.de Arma3Sync: ftp://heros-life.de/.a3s/autoconfig Gameserver: Heros-Life.de:2302
  28. 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
  29. 1 like
  30. 1 like
    Ya sorry its a bit of a habit I have!
  31. 1 like
    @OutLord Welcome To The Community! When You Get Your Server Ready Post The Connection Details I Would Love To Check It Out!
  32. 1 like
    Hello to everyone. As my title says I am an Aussie. I have been playing Arma for many years. So many years in fact that I was one of the few to preorder the original Operation Flashpoint. that makes me old, very old. As I am so old I am old fashioned in my gaming ways and find I just don't fit into the Life servers currently available A square in a circle you might say. Being old however, can have its advantages too. I have time and resources to set up a server how I like to play Arma. First Person view Only, a slightly slower and more military focussed role play. Let me explain my situation further. I am you could say retired even though I am only 49. I have amazing internet. Fibre to the home with ping of 10ms to Sydney Hub, Download 94Mbps and an upload of 35Mbps. I have several high end computers for gaming Including a spare i7 which I have already setup to run Exile as well as some other games in the past like Ark and DCS. I did manage to get Exile to work on my own with my limited skills but got bored fairly quickly with it and went back to playing Elite Dangerous for a few more months Anyway, I started playing life on one of the Aussie servers which is popular but basically full of kids running around in 3rd person and none able to focus on tasks at hand and brevity is non-existent. I did a few years ago help setup and run very good first person only DayZ server which was quite successful even though it had to be passworded to keep out hackers. So here is what I would like to achieve and hopefully, someone here would like to help me. An Australian First Person Only Altis Life Server. I will start this project on my own now but if there is anyone who thinks they would like to help out, please reply here or send me a message. I think Australia and neighboring countries really could use a server like this and hopefully I can raise the bar a little.
  33. 1 like
    If you're lacking of motivation, what's the point of starting a server? Or continuing one in your situation. Servers are ran for fun and to achieve a player base so people can meet and play with others, if you have no motivation, just go play on other servers. However, I bet you will find someone willing to help you throughout boosting your server back up, their are many players out their. Sincerely, Rod
  34. 1 like
  35. 1 like
    I must say that I read the messages you send me and the other ppl from the old thread. You were telling us that you were not a 12 years old immature kid and you were 23. Well this is immature what you just did with this post. You did write in the message you want to get delete in the database in the private message. Why even make this post then? You just did the opposite of what you wrote in your message to the staff.
  36. 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
  37. 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[] = {}; };
  38. 1 like
    To execute the scriptText and scriptCont with execVM they would have to be in your main mission file folder. Change it too init="nul = [this,45,60,{ [] execVM ""core\scripts\fn_scriptText.sqf""; }] execVM ""core\scripts\fn_scriptCont.sqf"";";
  39. 1 like
    @[IL] KingCrazyHunter I believe he meant a dialog to be able to change certain players ranks. Like it pops up when you press change while clicked on a players name and then you change his rank.
  40. 1 like
    The "Locked" is supposed to happen. Upload your RPT to pastebin and I'll take a look, your extdb log is normal however.
  41. 1 like
    Reading these comments is fucking hilarious but more so that I feel developers that share their hard work for free and helping people will stop doing so if they can't follow simple instructions, thanks for sharing your panel mate.
  42. 1 like
    So all my prices always start at a max price. Never the lowest or anywhere in between how do i fix this? https://pastebin.com/kERqw6dS So for example gold coin i have set up to ["gold_coinclean",1,1090,4200], It will always start at 4200 Never anywhere in between
  43. 1 like
    One more stupid comment from you and you are gone.
  44. 1 like
    Great work. Administration should sticky this.
  45. 1 like
    You don't have to be a developer to see that altislife DOES NOT EQUAL [ArmaLife]