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 02/27/2017 in all areas

  1. 15 likes
    Ok, where to start... Basically i’m releasing my AdminPanel that i have been working on for sometime now for all to use. I started this project mainly down to the fact of an old community i was a part of didn’t really fully understand how to use programs like Navicat and such and also the ability to manage the server on the go and a learning experience for myself. The github link is : https://github.com/Jason2605/AdminPanel I have a few screenshots of the AdminPanel on my flickr here (first few screenshots are not part of it): https:[email protected]/ The panel has a range of features which should make your server management a lot easier, a few of these are: RCON - This means the ability to kick/ban/message/stop/restart/unban people all from the panel API - Ability to get data from the panels API and use the data on your website, or in a discord bot etc. Ability to edit players database values - money/bank/cop/medic/admin level All setup from the panel itself - No config editing Further in-depth editing - single click license add/remove/blacklist/donator Ability to edit housing Ability to edit gangs Ability to edit vehicles Ability to search for players Full logging system - Everything is logged (apart from changes to staff accounts) Setting page - Easily change database and RCON connection info Profile page - Easily change staff user password Staff page - Easily change each staff accounts password/username/permissions Individual staff permissions - Easily manage each user to allow them to use each part of the panel separately Ability to add notes to players - Lets your admins see if players have committed a rule breaking offence with a warning system out of 3 (changes the colour of the note) Reimbursement logs - Easily add compensation logs, get your admins to add a log when they have given out comp to keep on top of where comp has been going Steam View - Ability to see users steam accounts from the panel More i can't remember! Any problems just submit an issue and ill do my best to get it sorted out, any features or further information you would like just let me know on the github, or on the discord attached to the github. Hope it comes in useful for people out there!
  2. 12 likes
    Working Scripts Archive easy access to all available scripts _____________________________________________________________________________________________________________________________________________ UI and Informational Intro Music Intro Music 2 Intro Text Intro Cam Intro Video Outro Script StatusBar Removing Default Statusbar Spawn Menu Redone Updated HUD IPAD Y Menu IPAD Y Menu 2 AI Based Scripts Dynamic Airdrop Improvements & Basic Features Seat Belts Patdown Player + Seize Objects Realistic Towing Ear Plugs Realistic CPR Kit Actions Menu Tag System Speed Bomb Zip Ties Police Backup Jaws of Life Realistic Tazer Hand Gestures Buyable Loadouts Backpack Custom Capacity Marijuana Effects Gag Action Fastrope Auto Save Adding Smoke Effect to Processing Placeable Objects for Police Invisible Backpacks for police/med Anti VDM Block Changing Names Cops can enter locked vehicles Warner's Barriers Configurable Jail Time Adding police radar GPS System Car Alarm Boat Rental Civilian Passports Police Gate Opening Hotkey Adding Smoke Trails to Cesna Suicide Vest Automatic Messages Systems and Complex Features Zipties Revised [Fully Working, With Gag and Blindfolds] Vehicle Insurance RYANTTS DYNAMIC MARKET SYSTEM OPFOR 4.4 Advanced Banking System, With Pins MrKraken's Gas Station Robbery Script Bounty Hunting Framework [Dialog, DB, Player Interaction] Altis Central Bank - Second Fed Purge [Server Event] Crafting System Slot Machines Bus Transportation SQL Based Smartphone Physical Cellphone Gang Capturable Areas Tutorials Basic Coding Tutorial Moving the Federal Reserve Task force Radio Black screen when not in channel ETC Separate Police/Civ Cash & Bank Account Gang Name Spawns Ruby Mine Custom Medic & Cop Skins Adding Licenses 4.4 Civilian Whitelisting Installing Task Force Radio (Addon/Mod) Mining with Shift+C Custom Paychecks Official Paid Scripts Maverick Applications Let me know if i missed anything
  3. 7 likes
    ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════ Difficulty: Hard Published By: Snipes Murphy Version: 4.x Credit: DiabolicaTrix ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════ All files are available here: https://github.com/DiabolicaTrix/Life-Banking-System/releases Navigate to the core folder, and drag the banking folder directly into it (these are single files, no files should be replaced) In the session folder, open the file fn_requestReceived.sqf and copy the contents of the file. Then go to your file of the same name, and copy the code just after initializing the CASH, BANK, etc. variables. Open the file fn_updatePartial.sqf, and copy the contents. Paste the code just after the "box 7: ..." In the shop folder, open fn_atmMenu.sqf, and copy the one line. Then replace the contents of your file with the same name by this single line. At the core root, open the configuration.sqf file, and in your file of the same name, copy the rows right after the life_marker In the init.sqf, copy the contents of the file, and in your file, paste the code between the initialization of the "sides" (initCiv, initCop, etc.) and the initialization of the "restrained" In the dialog folder, drag the banking folder directly. In the function, paste the files directly, and replace existing files. Copy the atm.hpp file directly to the dialog folder. Open the MasterHandler.hpp file and copy the contents. Add it to the very end of the file. Drag the sounds folder directly Drag the textures folder directly Drag the Config_Banking.hpp file directly Copy the single line of the Config_Master.hpp file and add it to the end of the Config_Master.hpp file. Copy the contents of description.ext, and add it to the end of CfgSounds In Functions.hpp, add the contents of the file after Vehicle. In the stringtable.xml, add the content to the end of the file, just before the closing tag of Project (</ Project>) In your life_server, navigate to the Mysql folder, and open the file fn_queryRequest.sqf, add "banking_pin" after each query, just after playtime. An example is provided in the file in question. Then, in the same file, copy the rest of the file and paste it before the switch. Copy the contents of fn_updatePartial.sqf, and add the right after box 7. In your database, add a new field in the player table, the field must be an int, with a length of 4, and be non-null (same features as the cash field).
  4. 6 likes
    ============================================================================================================ Difficulty: Easy Tutorial By: Hyper4u ============================================================================================================ Open description.ext and under CfgSounds add save and then open fn_spawnConfirm go to Under add Then you put your sound in root -> sounds and name it Welcome and remember it has to be an .ogg AND DONT FORGET TO LEAVE A LIKE! THANKS
  5. 6 likes
    Hello, Alpha Omega Gaming Network would like to introduce our Altis Life server. We are a serious role playing community that is focusing on recruiting mature people who just want to have a fun game experience. We are seeking to fill Staff, Police and Paramedic positions. Our server’s textures/skins are completely custom. We strive to fill Altis with "never before seen" structure designs. Our mission file has some size to it but as you will come to find out it’s well worth the download time. Please follow our server information below. We welcome all Orphaned Gangs who are looking to make a good long lasting server their home. Team Speak: alphaomegagaming.typefrag.com Website (Forums): www.alphaomegagamingnetwork.com Server IP: 23.229.27.219:2302 Mature Admins Server That is Community Driven Apex Gear ,Vehicles and Aircraft Custom Fed Custom Prison Custom Gang Bases A Huge Freeway System That Rivals Any In The Altis Life Communities. Custom Drugs, Gems and Gold Mining Two Police Departments State and Metro Coast Guard Custom Boat Ramps Active Developer and Map/Graphic Designer
  6. 6 likes
    I'm the owner of another altis popular server, and I must say I am very impressed with the work put into Alpha Omega. I encourage people to check them out, and to keep an eye on them as they evolve as a community.
  7. 6 likes
    Hi All I've put together a list of what i believe are the most common questions and answers to peoples problems when scripting Altis Life, This should help people find answers to questions more quickly and people are more then welcome to comment if i have left something out with a link and ill update the list. Ill update as i go and hope this helps someone. The aim is that all scripts ect will be working so please let me know if something is broken, Thanks. [Admin please feel free to sticky this if you think it could be off some help ] ========= Mission Editing ========= My mission won't launch after i map edit? Click Here How do i disable fog? Click Here Can i allow players to spawn at there gang base? Click Here How to change open shop objects? Click Here How do i add a radiation zone? Click Here How do i move the federal reserve? Click Here How do i add a second bank to altis? Click Here ========= Script Help ========= How do i change my taser weapon? Click Here How do i add zip ties? Click Here How do i add a welcome side script? Click Here How do i add a suicide vest? Click Here How do i add a push vehicle script? Click Here How do i add anti VDM [4.5]? Click Here How do i add peaceable objects for police? Click Here How do i add effects for marijuana? Click Here How do i add the ability for people to rob a gas station? Click Here How do i add a dynamic market? Click Here How do i install task force radio on my server? Click Here How do i add a bus transportation system? Click Here How to add a new status bar? Click Here How do i add buy-able load outs? Click Here How do i add meth drug? Click Here How do i add a intro cam? Click Here How do i add a outro cam? Click Here How do i add a cop pat down script? Click Here ========= Config Help ========= How do i allow players to save weapons? Click Here Why are licences being removed after i kill someone? Click Here How do i turn off spyglass? Click Here How do i rename a shop? Click Here How do i add a custom difficulty? [Template Included] Click Here How to find a colour code? Click Here How do i change the carry weight of a bag? Click Here How do i add BEC and server restarts? Click Here How do i add license's? Click Here How do i remove snakes from the server? Click Here How do i add more cop ranks? Click Here How do i add car lock and unlock sounds? Click Here How do i increase the animal population around the hunting zone ? Click Here How do i remove public cops? Click Here How do i change the repair kit timing? Click Here How do i change player start cash? Click Here How do i change player starting equipment? Click Here How do i make tool kits infinite? Click Here Key Handler Refrence Click Here ========= Texture Help ========= Where can i find some new textures? Click Here How do i add new car textures? Click Here How do i add vehicle skins? Click Here How do i add different uniforms for cop levels? Click Here or Click Here Cop and Medic skin tutorial Click Here More car textures Click Here ========= Altis Life Server Files ========= Altis Life 4.0 Download Click Here - Altis Life 4.0 Setup Click Here Altis Life 4.4 Download Click Here - Altis Life 4.4 Setup Click Here ========= Other Useful Help ========= Admin Debug Commands Click Here Arma 3 assets list Click Here Auto server build update and backup Click Here
  8. 5 likes
    Author: David (Yes its custom, omg no way m8) Just something I have been slaving away on for the past 3 hours TUTORIAL -------------------------------Removing The Default HUD-------------------- Step 0.1: Go into your description.ext and comment out: #include "dialog\hud_stats.hpp" to make it: //#include "dialog\hud_stats.hpp" or /*#include "dialog\hud_stats.hpp"*/ step 0.3453: go into "core\functions\fn_hudSetup.sqf" and comment out #include "..\..\script_macros.hpp" /* File: fn_hudSetup.sqf Author: Bryan "Tonic" Boardwine Description: Setups the hud for the player? */ disableSerialization; cutRsc ["playerHUD", "PLAIN", 2, false]; [] call life_fnc_hudUpdate; [] spawn { private["_dam"]; for "_i" from 0 to 1 step 0 do { _dam = damage player; waitUntil {(damage player) != _dam}; [] call life_fnc_hudUpdate; }; }; To make it look like: #include "..\..\script_macros.hpp" /* File: fn_hudSetup.sqf Author: Bryan "Tonic" Boardwine Description: Setups the hud for the player? */ /* disableSerialization; cutRsc ["playerHUD", "PLAIN", 2, false]; [] call life_fnc_hudUpdate; [] spawn { private["_dam"]; for "_i" from 0 to 1 step 0 do { _dam = damage player; waitUntil {(damage player) != _dam}; [] call life_fnc_hudUpdate; }; }; */ Step 0.99: go into "core\functions\fn_hudUpdate.sqf" and comment out: #include "..\..\script_macros.hpp" /* File: fn_hudUpdate.sqf Author: Daniel Stuart Description: Updates the HUD when it needs to. */ disableSerialization; if (isNull LIFEdisplay) then {[] call life_fnc_hudSetup;}; LIFEctrl(2200) progressSetPosition (life_hunger / 100); LIFEctrl(2201) progressSetPosition (1 - (damage player)); LIFEctrl(2202) progressSetPosition (life_thirst / 100); To make it look like: #include "..\..\script_macros.hpp" /* File: fn_hudUpdate.sqf Author: Daniel Stuart Description: Updates the HUD when it needs to. */ /* disableSerialization; if (isNull LIFEdisplay) then {[] call life_fnc_hudSetup;}; LIFEctrl(2200) progressSetPosition (life_hunger / 100); LIFEctrl(2201) progressSetPosition (1 - (damage player)); LIFEctrl(2202) progressSetPosition (life_thirst / 100); */ ---------------------------------Installing My HUD--------------------------------- Step 1: Go into your "Dialog" folder and make a file called custHud.hpp and place the following inside: #include "common.hpp" class custHUD { idd = 1000000; movingEnable = 0; enableSimulation = 1; enableDisplay = 1; duration = 99999; fadein = 0.1; fadeout = 0.1; name = "custHUD"; onLoad = "with uiNameSpace do { custHUD = _this select 0 }"; class controls { class bg: Life_RscText { idc = 1000; x = 0.340156 * safezoneW + safezoneX; y = 0.929 * safezoneH + safezoneY; w = 0.314531 * safezoneW; h = 0.055 * safezoneH; colorBackground[] = {0,0,0,0.3}; }; class healthico: Life_RscPicture { idc = 1200; text = "icons\health.paa"; x = 0.345312 * safezoneW + safezoneX; y = 0.94 * safezoneH + safezoneY; w = 0.020625 * safezoneW; h = 0.033 * safezoneH; }; class foodico: Life_RscPicture { idc = 1201; text = "icons\drink.paa"; x = 0.448438 * safezoneW + safezoneX; y = 0.94 * safezoneH + safezoneY; w = 0.020625 * safezoneW; h = 0.033 * safezoneH; }; class thirstico: Life_RscPicture { idc = 1202; text = "icons\food.paa"; x = 0.551562 * safezoneW + safezoneX; y = 0.94 * safezoneH + safezoneY; w = 0.020625 * safezoneW; h = 0.033 * safezoneH; }; class healthtext: Life_RscStructuredText { idc = 1100; text = ""; x = 0.371094 * safezoneW + safezoneX; y = 0.94 * safezoneH + safezoneY; w = 0.0721875 * safezoneW; h = 0.033 * safezoneH; colorText[] = {1,1,1,1}; class Attributes { color = "#FFFFFF"; align = "LEFT"; valign = "bottom"; underline = false; }; }; class foodtext: Life_RscStructuredText { idc = 1101; text = ""; x = 0.474219 * safezoneW + safezoneX; y = 0.94 * safezoneH + safezoneY; w = 0.0721875 * safezoneW; h = 0.033 * safezoneH; class Attributes { color = "#FFFFFF"; align = "LEFT"; valign = "bottom"; underline = false; }; }; class thirsttext: Life_RscStructuredText { idc = 1102; text = ""; x = 0.577344 * safezoneW + safezoneX; y = 0.94 * safezoneH + safezoneY; w = 0.0721875 * safezoneW; h = 0.033 * safezoneH; class Attributes { color = "#FFFFFF"; align = "LEFT"; valign = "bottom"; underline = false; }; }; class banktitle: Life_RscStructuredText { idc = 1001; text = "Bank"; //--- ToDo: Localize; x = 0.891875 * safezoneW + safezoneX; y = 0.819 * safezoneH + safezoneY; w = 0.0928125 * safezoneW; h = 0.011 * safezoneH; colorBackground[] = {1,0,0,1}; }; class cashtitle: Life_RscStructuredText { idc = 1002; text = "Cash"; //--- ToDo: Localize; x = 0.891875 * safezoneW + safezoneX; y = 0.874 * safezoneH + safezoneY; w = 0.0928125 * safezoneW; h = 0.011 * safezoneH; colorBackground[] = {1,0,0,1}; }; class bankbg: Life_RscText { idc = 1004; x = 0.891875 * safezoneW + safezoneX; y = 0.83 * safezoneH + safezoneY; w = 0.0928125 * safezoneW; h = 0.044 * safezoneH; colorBackground[] = {0,0,0,0.3}; }; class cashbg: Life_RscText { idc = 1005; x = 0.891875 * safezoneW + safezoneX; y = 0.885 * safezoneH + safezoneY; w = 0.0928125 * safezoneW; h = 0.044 * safezoneH; colorBackground[] = {0,0,0,0.3}; }; class bankcount: Life_RscStructuredText { idc = 1103; text = ""; x = 0.897031 * safezoneW + safezoneX; y = 0.841 * safezoneH + safezoneY; w = 0.0825 * safezoneW; h = 0.022 * safezoneH; colorBackground[] = {-1,-1,-1,0}; }; class cashcount: Life_RscStructuredText { idc = 1104; text = ""; x = 0.897031 * safezoneW + safezoneX; y = 0.896 * safezoneH + safezoneY; w = 0.0825 * safezoneW; h = 0.022 * safezoneH; colorBackground[] = {-1,-1,-1,0}; }; class playersbg: Life_RscText { idc = 1003; x = 0.891875 * safezoneW + safezoneX; y = 0.94 * safezoneH + safezoneY; w = 0.0928125 * safezoneW; h = 0.044 * safezoneH; colorBackground[] = {0,0,0,0.3}; }; class playercount: Life_RscStructuredText { idc = 1105; text = ""; x = 0.897031 * safezoneW + safezoneX; y = 0.951 * safezoneH + safezoneY; w = 0.0825 * safezoneW; h = 0.022 * safezoneH; colorBackground[] = {-1,-1,-1,0}; }; class Playerstitle: Life_RscStructuredText { idc = 1006; text = "Players"; //--- ToDo: Localize; x = 0.891875 * safezoneW + safezoneX; y = 0.929 * safezoneH + safezoneY; w = 0.0928125 * safezoneW; h = 0.011 * safezoneH; colorBackground[] = {1,0,0,1}; //sizeEx = 0.9 * GUI_GRID_H; }; class watermark: Life_RscPicture { idc = 1203; text = "textures\logo.paa"; x = 0.0101562 * safezoneW + safezoneX; y = 0.885 * safezoneH + safezoneY; w = 0.0721875 * safezoneW; h = 0.099 * safezoneH; }; }; }; ^^ now, yes it has #include "common,hpp" at the top that was just because I was testing it in editor. So you can remove it but just to be safe i left it there !!!!! THERE IS A WATERMARK ELEMENT AT THE BOTTOM PUT YOUR LOGO THERE (if you have one) BUT MAKE SURE IT'S NOT A SQUARE NUMBER E.G. IT'S NOT 256 X 256 OR 512 X 512, IT NEEDS TO BE SOMETHING LIKE 200 X 300 (IT CAN HAVE WHITE SPACE BTW) KK TY !!!!! Step 2: go into "core\scripts" and create a file called "custHud.sqf" and add the following into it: #include "..\..\script_macros.hpp" /* Author: David Edited: Dark (Custom colours & precise stats) Community: ArmaCentral RP & Altisliferpg.com & InfiniteNetwork.xyz Don't edit or redistribute without asking, 1st not cool, 2nd I will DMCA you, ask slyfoxgaming :) */ disableSerialization; 1 cutRsc ["custHUD","PLAIN"]; waitUntil {!isNull (uiNameSpace getVariable "custHUD")}; //Displays _display = uiNameSpace getVariable "custHUD"; _healthidc = _display displayCtrl 1100; _foodidc = _display displayCtrl 1101; _thirstidc = _display displayCtrl 1102; _bankidc = _display displayCtrl 1103; _cashidc = _display displayCtrl 1104; _playeridc = _display displayCtrl 1105; //titles _banktitle = _display displayCtrl 1001; _cashtitle = _display displayCtrl 1002; _playertitle = _display displayCtrl 1006; //Stats _damage = round ((1 - (damage player)) * 100); // //PLEASE COMMENT OUT >>ONE<< OF THE TWO SETS OF VARIABLES BELOW // //THIS ONE OS FOR TEXT E.G. | IM HEALTHY | NEED SOME FOOD | NOT THIRSTY | _hunger = life_hunger; _thirst = life_thirst; //THIS ONE OS FOR EXACT VALUES E.G.| 100% HEALTH | 100% FOOD | 100% THIRST | _hunger = round (life_hunger); _thirst = round (life_thirst); _cash = [CASH] call life_fnc_numberText; _bank = [BANK] call life_fnc_numberText; _players = count playableUnits; //Colours _colourDefault = parseText "#adadad"; _colour108 = parseText "#FF7000"; _colour107 = parseText "#FF9000"; _colour106 = parseText "#FFBB00"; _colour105 = parseText "#FFCC00"; _colour104 = parseText "#81CCDD"; _colour103 = parseText "#33AACC"; _colour102 = parseText "#3388CC"; _colour101 = parseText "#3366CC"; _colour100 = parseText "#336600"; _colour90 = parseText "#339900"; _colour80 = parseText "#33CC00"; _colour70 = parseText "#33FF00"; _colour60 = parseText "#66FF00"; _colour50 = parseText "#CCFF00"; _colour40 = parseText "#CCCC00"; _colour30 = parseText "#CC9900"; _colour20 = parseText "#CC6600"; _colour10 = parseText "#CC3300"; _colour0 = parseText "#CC0000"; _colourDead = parseText "#000000"; _colourDamage = _colourDefault; switch true do { case(_damage >= 100) : {_colourDamage = _colour100;}; case((_damage >= 90) && (_damage < 100)) : {_colourDamage = _colour100;}; case((_damage >= 80) && (_damage < 90)) : {_colourDamage = _colour80;}; case((_damage >= 70) && (_damage < 80)) : {_colourDamage = _colour70;}; case((_damage >= 60) && (_damage < 70)) : {_colourDamage = _colour60;}; case((_damage >= 50) && (_damage < 60)) : {_colourDamage = _colour50;}; case((_damage >= 40) && (_damage < 50)) : {_colourDamage = _colour40;}; case((_damage >= 30) && (_damage < 40)) : {_colourDamage = _colour30;}; case((_damage >= 20) && (_damage < 30)) : {_colourDamage = _colour20;}; case((_damage >= 10) && (_damage < 20)) : {_colourDamage = _colour10;}; case((_damage >= 1) && (_damage < 10)) : {_colourDamage = _colour0;}; case(_damage < 1) :{_colourDamage = _colourDead;}; }; _colourHunger = _colourDefault; switch true do { case(_hunger >= 100) :{_colourHunger = _colour100;}; case((_hunger >= 90) && (_hunger < 100)) : {_colourHunger = _colour90;}; case((_hunger >= 80) && (_hunger < 90)) : {_colourHunger = _colour80;}; case((_hunger >= 70) && (_hunger < 80)) : {_colourHunger = _colour70;}; case((_hunger >= 60) && (_hunger < 70)) : {_colourHunger = _colour60;}; case((_hunger >= 50) && (_hunger < 60)) : {_colourHunger = _colour50;}; case((_hunger >= 40) && (_hunger < 50)) : {_colourHunger = _colour40;}; case((_hunger >= 30) && (_hunger < 40)) : {_colourHunger = _colour30;}; case((_hunger >= 20) && (_hunger < 30)) : {_colourHunger = _colour20;}; case((_hunger >= 10) && (_hunger < 20)) : {_colourHunger = _colour10;}; case((_hunger >= 1) && (_hunger < 10)) : {_colourHunger = _colour0;}; case(_hunger < 1) :{_colourHunger = _colourDead;}; }; _colourThirst = _colourDefault; switch true do { case(_thirst >= 100) : {_colourThirst = _colour101;}; case((_thirst >= 90) && (_thirst < 100)) : {_colourThirst = _colour102;}; case((_thirst >= 80) && (_thirst < 90)) : {_colourThirst = _colour103;}; case((_thirst >= 70) && (_thirst < 80)) : {_colourThirst = _colour104;}; case((_thirst >= 60) && (_thirst < 70)) : {_colourThirst = _colour105;}; case((_thirst >= 50) && (_thirst < 60)) : {_colourThirst = _colour106;}; case((_thirst >= 40) && (_thirst < 50)) : {_colourThirst = _colour107;}; case((_thirst >= 30) && (_thirst < 40)) : {_colourThirst = _colour108;}; case((_thirst >= 20) && (_thirst < 30)) : {_colourThirst = _colour20;}; case((_thirst >= 10) && (_thirst < 20)) : {_colourThirst = _colour10;}; case((_thirst >= 1) && (_thirst < 10)) : {_colourThirst = _colour0;}; case(_thirst < 1) : {_colourThirst = _colourDead;}; }; if (_damage < 100) then { _healthtext = parseText format["Very Healthy"]; } else { if (_damage < 85) then { _healthtext = parseText format["A few scratches"]; } else { if (_damage < 70) then { _healthtext = parseText format["Slightly injured"]; } else { if (_damage < 60) then { _healthtext = parseText format["Not feeling well"]; } else { if (_damage < 50 ) then { _healthtext = parseText format["Starting to feel pain"]; } else { if (_damage < 40) then { _healthtext = parseText format["I feel pain"]; } else { if (_damage < 30) then { _healthtext = parseText format["Something must be broken"]; } else { if (_damage < 20) then { _healthtext = parseText format["Horribly injured"]; } else { if (_damage < 10) then { _healthtext = parseText format["Extremely injured"]; } else { if (_damage == 0) then { _healthtext = parseText format["Dead</t>"]; };};};};};};};};};}; if (_hunger > 90) then { _hungertext = parseText format["I'm not hungry"]; } else { if (_hunger > 80) then { _hungertext = parseText format["Not hungry at all"]; } else { if (_hunger > 70) then { _hungertext = parseText format["Could use some crackers"]; } else { if (_hunger > 60) then { _hungertext = parseText format["Might need something soon"]; } else { if (_hunger > 50) then { _hungertext = parseText format["Stomach is feeling empty"]; } else { if (_hunger > 40) then { _hungertext = parseText format["I should eat soon"]; } else { if (_hunger > 30) then { _hungertext = parseText format["My stomach is grumbling"]; } else { if (_hunger > 20) then { _hungertext = parseText format["I need to eat now"]; } else { if (_hunger > 10) then { _hungertext = parseText format["Starvation is kicking in"]; } else { if (_hunger == 0) then { _hungertext = parseText format["Dead</t>"]; };};};};};};};};};}; if (_thirst > 80) then { _thirsttext = parseText format["Not thirsty"]; } else { if (_thirst > 70) then { _thirsttext = parseText format["Could use a glass of water"]; } else { if (_thirst > 60) then { _thirsttext = parseText format["Should drink something soon"]; } else { if (_thirst > 50) then { _thirsttext = parseText format["Throat is a little dry"]; } else { if (_thirst > 40) then { _thirsttext = parseText format["I should drink soon"]; } else { if (_thirst > 30) then { _thirsttext = parseText format["My throat is dry"]; } else { if (_thirst > 20) then { _thirsttext = parseText format["I should drink now"]; } else { if (_thirst > 10) then { _thirsttext = parseText format["Dehydration Feels Horrible"]; } else { if (_thirst == 0) then { _thirsttext = parseText format["DEAD</t>"]; };};};};};};};};}; _healthidc ctrlSetStructuredText (parseText format ["<t font='TahomaB' size='0.7' color='%3'>%2%1</t>","%",_damage,_colourDamage]); _foodidc ctrlSetStructuredText (parseText format ["<t font='TahomaB' size='0.7' color='%3'>%2%1</t>","%",_hunger,_colourHunger]); _thirstidc ctrlSetStructuredText (parseText format ["<t font='TahomaB' size='0.7' color='%3'>%2%1</t>","%",_thirst,_colourThirst]); ////^^^^^^^^^^^ HAS EXACT VALUES E.G. HUNGER 100% | THIRST 100% | HEALTH 100% //// //// COMMENT ONE OF THE TWO OUT AS IF YOU DONT, IT WONT WORK ---- REFER TO THE VARIABLES AT THE TOP, THE ONE YOU COMMENTED OUT CORROSPONDS TO THE ONE YOU SHOULD USE NOW!!!!!!!! //// //// THIS ONE BELOW HAS TEXT E.G. HEALTH: SERIOUSLY INJURED | THIRST: NOT THIRSTY | HUNGER: NOT HUNGRY _healthidc ctrlSetStructuredText (parseText format ["<t font='TahomaB' size='0.7' color='%2'>%1</t>",_healthtext,_colourDamage]); _foodidc ctrlSetStructuredText (parseText format ["<t font='TahomaB' size='0.7' color='%2'>%1</t>",_hungertext,_colourHunger]); _thirstidc ctrlSetStructuredText (parseText format ["<t font='TahomaB' size='0.7' color='%2'>%1</t>",_thirsttext,_colourThirst]); //DONT COMMENT THE BELLOW OUT _cashidc ctrlSetStructuredText (parseText format ["$%1",_cash]); _bankidc ctrlSetStructuredText (parseText format ["$%1",_bank]); _playeridc ctrlSetStructuredText (parseText format ["%1",_players]); _cashtitle ctrlSetStructuredText (parseText format ["<t font='TahomaB' size='0.5'>Cash</t>"]); _banktitle ctrlSetStructuredText (parseText format ["<t font='TahomaB' size='0.5'>Bank</t>"]); _playertitle ctrlSetStructuredText (parseText format ["<t font='TahomaB' size='0.5'>Players</t>"]); ^^^^ hope it works haven't tested it Step 3: Go into your "core\fn_initCop.sqf & fn_initCiv.sqf & fn_initMed.sqf" and add the following line near the bottom: [] execVM "core\scripts\custHud.sqf"; Step 3: add the same line into your "core\functions\fn_hudupdate.sqf" BELLOW OR ABOVE WHAT YOU COMMENTED OUT!!! [] execVM "core\scripts\custHud.sqf"; Step 4: Go into each file listed bellow and add the following code at the bottom of each: [] call life_fnc_hudUpdate; Files: fn_bankDeposit.sqf fn_bankTransfer.sqf fn_bankWithdraw.sqf fn_gangWithdraw.sqf fn_gangDeposit.sqf fn_giveMoney.sqf anywhere else money is taken or received.sqf Step 5: Go into your description.ext and add the following under "class RscTitles" #include "dialog\custHud.hpp" Put the below images into the ini section folder, if you don't have one (you should) make one and... Done health.paa drink.paa food.paa
  9. 5 likes
    Morphine Currently, there's not many ways of Healing in Altis Life. You have First Aid Kits or Medkits. You could argue that the following script is pointless, sure. But, I wanted medics to have a few more items added to their arsenal, so I made morphine which takes up virtual weight, instead of inventory weight. Morphine heals a player over time to almost full health, and can be used by medics to treat injured people. It will also cause a few side-effects on use, which can last a while. It's up to you if you want civilians to have access to this Item, as it can be considered a bit over-powered, however to me it is better than Medkits which offer instant 100% health. It can also be classed as illegal, if needed. DISCLAIMER: This script has been tested and is working on Altis Life version 5.0.0. Use at your own risk if you are using on anything lower. Tutorial 1. In your functions.hpp add the following to class Actions: class injectAction {}; Then add the following to class Items: class morphine {}; 2. Open fn_useItem.sqf and under the following: case (_item isEqualTo "lockpick"): { [] spawn life_fnc_lockpick; closeDialog 0; }; Add: case (_item isEqualTo "morphine"): { if(([false,_item,1] call life_fnc_handleInv)) then { [] spawn life_fnc_morphine; }; }; 3. In config_vItems.hpp add the following class: class morphine { variable = "morphine"; displayName = "STR_Item_Morphine"; weight = 1; buyPrice = 0; sellPrice = 0; illegal = false; edible = -1; icon = "icons\Morphine.paa"; }; Also, add the item to the medical market class med_market { name = "STR_Shops_Market"; side = "med"; conditions = ""; items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "fuelFull", "peach", "defibrillator", "morphine" }; }; 4. Open CfgRemoteExec.hpp and add the following to the functions for everyone: F(life_fnc_morphine,ANYONE) 5. Make a new file called fn_injectAction.sqf inside core\actions: /* File: fn_injectAction.sqf Author: Ilusionz Description: Handles the animation and script execution for medics when using Morphine on an injured person. */ private["_target"]; _target = cursorTarget; //Error checks if(isNull _target) exitWith {}; if(!isPlayer _target) exitWith {}; if(life_inv_morphine != 0) then { titleText[localize "STR_NOTF_Morphine","PLAIN"]; [player,"AinvPknlMstpSnonWrflDnon_medic1"] remoteExec ["life_fnc_animSync",0]; sleep 2; titleText[localize "STR_NOTF_MorphineInj","PLAIN"]; [] remoteExec ["life_fnc_morphine",_target]; [false,"morphine",1] call life_fnc_handleinv; player playMoveNow "AmovPercMstpSnonWnonDnon"; }; 6. Create a new file inside core\items called fn_morphine.sqf: /* File: fn_morphine.sqf Author: Ilusionz Description: Upon use of Morphine, this script will add health over time while also giving a bit of a high. */ private["_damage","_health"]; closeDialog 0; hint "You suddenly feel very nauseous, yet your pains are fading."; sleep 3; "radialBlur" ppEffectEnable true; enableCamShake true; for "_i" from 0 to 19 do { "radialBlur" ppEffectAdjust [random 0.06,random 0.06,0.25,0.25]; "radialBlur" ppEffectCommit 1; addcamShake[random 3, 1, random 3]; sleep 1; }; for "_health" from 0 to 29 do { while {damage player > 0.1} do { _damage = damage player; _damage = _damage - 0.05; player setDamage (_damage); [] call life_fnc_hudUpdate; sleep 5; }; }; "radialBlur" ppEffectAdjust [0,0,0,0]; "radialBlur" ppEffectCommit 5; sleep 6; "radialBlur" ppEffectEnable false; resetCamShake; 7. Open fn_setupActions.sqf and add the following to the independent case: //Inject Morphine life_actions = life_actions + [player addAction[localize "STR_pAct_Inject",life_fnc_injectAction,"",0,false,false,"",' !isNull cursorTarget && player distance cursorTarget < 3.5 && isPlayer cursorTarget && damage cursorTarget > 0.1']]; 8. Add the following to your Stringtable.xml: <Key ID="STR_NOTF_MorphineInj"> <Original>You have administered morphine!</Original> </Key> <Key ID="STR_NOTF_Morphine"> <Original>You are administering morphine!</Original> </Key> <Key ID="STR_Item_Morphine"> <Original>Morphine Syrette</Original> </Key> <Key ID="STR_pAct_Inject"> <Original>Inject Morphine</Original> </Key> That's it! Attached to this tutorial is an icon for the Morphine, so make sure you download it! Thanks to RyanTT for help with a few issues regarding this script! If you run in to any issues please post below. Morphine.paa
  10. 5 likes
    ============================================================================================================ Difficulty: Easy Tutorial By: Hyper4u ============================================================================================================ Go to root -> core -> admin and create a file called fn_adminLoadout.sqf and place this code inside: Then go to root -> functions.hpp and then go to class Admin and at the bottom add this then go to root -> dialog -> admin_menu.hpp and add this ---- Optional --- "If you wanna have skinned admin clothes" go to root -> core -> admin -> fn_adminLoadout.sqf and add this at the bottom then go to core-> functions -> fn_playerSkins.sqf and add this under every case (west, independent, civilian) And change "U_Competitor" to the clothes you want the skins on. go to root -> textures and inside textures create a folder named admin and inside the folder you put your skin and name it uniform.jpg AND DONT FORGET TO LEAVE A LIKE! THANKS
  11. 5 likes
    Hello guys today i'm just going to start off by introducing my self, hi! I'm buttery and I like to do a lot of this in my spare time.. which is all the time to be honest _____________________________________________________________________________________________________________________________________________________________________ What are we making? What we are going to be doing here is making a CPR Kit which you can buy from the market. What does it do? The CPR Kit is used on down players, it has a 15% chance of revival every time it is used(has unlimited uses) and after every try it automatically restart the process till the player is picked up, unless you cancel the action. _____________________________________________________________________________________________________________________________________________________________________ In core\items make a file called fn_cprkit.sqf #include "..\..\script_macros.hpp" private["_target","_revivable","_targetName","_ui","_progressBar","_titleText","_cP","_title"]; _target = cursorTarget; if(isNull _target) exitWith {}; _revivable = _target getVariable ["Revive",FALSE]; if(_revivable) exitWith {}; if(player distance _target > 5) exitWith {}; if(life_action_inUse) exitWith {}; if(_target == player) exitWith {}; _title = format[localize "STR_CPR_Progress"]; life_action_inUse = true; if(_target == player) exitWith {}; _target setVariable ["Reviving",player,TRUE]; disableSerialization; 5 cutRsc ["life_progress","PLAIN"]; _ui = uiNamespace getVariable ["life_progress",displayNull]; _progressBar = _ui displayCtrl 38201; _titleText = _ui displayCtrl 38202; _titleText ctrlSetText format["%2 (1%1)...","%",_title]; _progressBar progressSetPosition 0.01; _cP = 0.01; while {true} do { if(animationState player != "AinvPknlMstpSnonWnonDnon_medic_1") then { [player,"AinvPknlMstpSnonWnonDnon_medic_1"] remoteExecCall ["life_fnc_animSync",RCLIENT]; player playMoveNow "AinvPknlMstpSnonWnonDnon_medic_1"; }; sleep .15; _cP = _cP + .01; _progressBar progressSetPosition _cP; _titleText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_title]; if(_cP >= 1 OR !alive player) exitWith {}; if(life_istazed) exitWith {}; if(life_isknocked) exitWith {}; if(life_interrupted) exitWith {}; if((player getVariable ["restrained",false])) exitWith {}; if(player distance _target > 4) exitWith {_badDistance = true;}; if(_target getVariable ["Revive",FALSE]) exitWith {}; if(_target getVariable ["Reviving",ObjNull] != player) exitWith {}; }; 5 cutText ["","PLAIN"]; player playActionNow "stop"; _target setVariable ["Reviving",NIL,TRUE]; if(!alive player OR life_istazed OR life_isknocked) exitWith {life_action_inUse = false;}; if(_target getVariable ["Revive",FALSE]) exitWith {hint localize "STR_Medic_RevivedRespawned"}; if((player getVariable ["restrained",false])) exitWith {life_action_inUse = false;}; if(!isNil "_badDistance") exitWith {titleText[localize "STR_Medic_TooFar","PLAIN"]; life_action_inUse = false;}; if(life_interrupted) exitWith {life_interrupted = false; titleText[localize "STR_NOTF_ActionCancel","PLAIN"]; life_action_inUse = false;}; life_action_inUse = false; _break = floor (random 100); if (_break < 85) exitWith {[] spawn life_fnc_cprkit;}; _target setVariable ["Revive",TRUE,TRUE]; [profileName] remoteExecCall ["life_fnc_cprrevived",_target]; sleep .6; player reveal _target; Now you are going to need to set the stringtable for "STR_CPR_Progress" Under <Key ID="STR_Medic_Progress"> <Original>Reviving %1</Original> <Czech>Oživení %1</Czech> <Spanish>Reviviendo %1</Spanish> <Russian></Russian> <German>Wird wiederbelebt %1</German> <French>Réanimations %1</French> <Italian>Rianimando %1</Italian> <Portuguese>Revivendo %1</Portuguese> <Polish>Reanimacja %1</Polish> </Key> add <Key ID="STR_CPR_Progress"> <Original>Performing CPR</Original> </Key> Now we also need to add the function, so in Functions.hpp add class cprkit {}; inside class Items { file = "core\items"; Now we need to make life_fnc_cprrevived actually do something In core\medical create a new file called fn_cprrevived.sqf #include "..\..\script_macros.hpp" private ["_dir"]; [life_save_gear] spawn life_fnc_loadDeadGear; life_corpse setVariable ["realname",nil,true]; [life_corpse] remoteExecCall ["life_fnc_corpse",RANY]; _dir = getDir life_corpse; closeDialog 0; life_deathCamera cameraEffect ["TERMINATE","BACK"]; camDestroy life_deathCamera; player setDir _dir; player setPosASL (visiblePositionASL life_corpse); life_corpse setVariable ["Revive",nil,true]; life_corpse setVariable ["name",nil,true]; [life_corpse] remoteExecCall ["life_fnc_corpse",RANY]; deleteVehicle life_corpse; life_action_inUse = false; life_is_alive = true; player setVariable ["Revive",nil,true]; player setVariable ["name",nil,true]; player setVariable ["Reviving",nil,true]; [] call life_fnc_playerSkins; [] call life_fnc_hudUpdate; [] call SOCK_fnc_updateRequest; player setDamage 0.60; Now we also need to make this a function, so in Functions.hpp add class cprrevived {}; inside class Medical_System { file = "core\medical"; Next we are going to set the item to be usable which we will create in a moment In fn_useItem.sqf add case (_item isEqualTo "cprKit"): { [] spawn life_fnc_cprKit; }; Now im gonna make so when the CPR kit is dropped it will create the defibrillator item on the floor In fn_dropItems.sqf add case "cprKit": { if (_value > 0) then { _pos = _unit modelToWorld[0,3,0]; _pos = [(_pos select 0), (_pos select 1), 0]; _obj = "Land_Defibrillator_F" createVehicle _pos; [_obj] remoteExecCall ["life_fnc_simDisable",RANY]; _obj setPos _pos; _obj setVariable ["item",[_item,_value],true]; missionNamespace setVariable [_itemName,0]; }; }; Now we make the cprkit an actual item.. in Config_vItems.sqf where all the other items are listed add class cprKit { variable = "cprKit"; displayName = "STR_Item_CPRMediKit"; weight = 5; buyPrice = 20000; sellPrice = 7500; illegal = false; edible = -1; icon = "icons\ico_defib.paa"; }; We will add STR_Item_CPRMediKit in a moment If you want an icon make one otherwise use the one listed below Under class VirtualShops { is where you can choose what shops you can but these from for example lets say we want only gang shops to get this it would look like such class gang { name = "STR_Shops_Gang"; side = "civ"; conditions = ""; items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "pickaxe", "fuelFull", "peach", "boltcutter", "blastingcharge", "cprKit" }; }; Now we add another stringtable Under STR_Item_Goat add <Key ID="STR_Item_CPRMediKit"> <Original>CPR MediKit</Original> </Key> Now we want the cprkit to save in players and vehicles inventories Config_Master.hpp Were gonna add ,"cprKit" in saved_virtualItems[] = { and save_vehicle_items[] = { Lastly we gotta make being revived able to be run remotely In CfgRemoteExec.hpp add F(life_fnc_cprrevived,CLIENT) Under /* Client only functions */ _____________________________________________________________________________________________________________________________________________________________________ CPR Kit Icon Download put in icons\ _____________________________________________________________________________________________________________________________________________________________________ If you have any questions at all just leave a comment and I will help you out!
  12. 4 likes
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Difficulty: Easy Publish by: suffer4real Source AltisLifeRPG.com cache -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Script: RyanTTs Dynamic Market System Version: Altis Life 4.4r3 ___________________________________________________________________________________ First Make sure you make a backup just in case you do something wrong. I am having this script running on a clean 4.4r3 and that should work. Let's start shall we ? Mission File : open your : functions.h and paste this code under the core/actions class. class DynMarket { file = "core\DynMarket"; class bought {}; class update {}; class DisplayPrices {}; class LoadIntoListbox {}; class ForcePrice {}; class DYNMARKET_getPrice {}; class DYNMARKET_getIcon {}; }; 2. i will add a Dynmarket folder in the attachments and place it in the core folder. DynMarket.rar 3. now open the init.sqf file in the core folder and put this code right above the last 3 lines DYNAMICMARKET_boughtItems = []; [player] remoteExec ["TON_fnc_playerLogged",RSERV]; 4. open your fn_virt_sell.sqf and replace with this : #include "..\..\script_macros.hpp" /* File: fn_virt_sell.sqf Author: Bryan "Tonic" Boardwine Description: Sell a virtual item to the store / shop */ private["_type","_index","_price","_amount","_name"]; if ((lbCurSel 2402) isEqualTo -1) exitWith {}; _type = lbData[2402,(lbCurSel 2402)]; _price = -2; _itemNameToSearchFor = _type; { _curItemName = _x select 0; _curItemPrice = _x select 1; if (_curItemName==_itemNameToSearchFor) then {_price=_curItemPrice}; } forEach DYNMARKET_prices; if (_price isEqualTo -1) exitWith {}; if (_price isEqualTo -2) then { _price = M_CONFIG(getNumber,"VirtualItems",_type,"sellPrice"); if (_price isEqualTo -1) exitWith {}; }; _amount = ctrlText 2405; if (!([_amount] call TON_fnc_isnumber)) exitWith {hint localize "STR_Shop_Virt_NoNum";}; _amount = parseNumber (_amount); if (_amount > (ITEM_VALUE(_type))) exitWith {hint localize "STR_Shop_Virt_NotEnough"}; if ((time - life_action_delay) < 0.2) exitWith {hint localize "STR_NOTF_ActionDelay";}; life_action_delay = time; _price = (_price * _amount); _name = M_CONFIG(getText,"VirtualItems",_type,"displayName"); if ([false,_type,_amount] call life_fnc_handleInv) then { hint format[localize "STR_Shop_Virt_SellItem",_amount,(localize _name),[_price] call life_fnc_numberText]; CASH = CASH + _price; [0] call SOCK_fnc_updatePartial; [] call life_fnc_virt_update; DYNAMICMARKET_boughtItems pushBack [_type,_amount]; }; if (life_shop_type isEqualTo "drugdealer") then { private["_array","_ind","_val"]; _array = life_shop_npc getVariable["sellers",[]]; _ind = [getPlayerUID player,_array] call TON_fnc_index; if (!(_ind isEqualTo -1)) then { _val = ((_array select _ind) select 2); _val = _val + _price; _array set[_ind,[getPlayerUID player,profileName,_val]]; life_shop_npc setVariable["sellers",_array,true]; } else { _array pushBack [getPlayerUID player,profileName,_price]; life_shop_npc setVariable["sellers",_array,true]; }; }; if (life_shop_type isEqualTo "gold" && (LIFE_SETTINGS(getNumber,"noatm_timer")) > 0) then { [] spawn { life_use_atm = false; sleep ((LIFE_SETTINGS(getNumber,"noatm_timer")) * 60); life_use_atm = true; }; }; [0] call SOCK_fnc_updatePartial; [3] call SOCK_fnc_updatePartial; 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 6. open your masterhandler.hpp and add these 2: #include "dynmarket_changeprice.hpp" #include "dynmarket_prices.hpp" 7. now download these 2 files and place them in your dialog folder. dialog.rar 8. now we go to the @life_server part. now open your config.cpp and paste this under your system classes class DynMarket { file = "\life_server\Functions\DynMarket"; class calculatePrices {}; class config {}; class getUpdate {}; class HandleDB {}; class playerLogged {}; class sleeper {}; }; 9. now open your functions folder and download and paste this folder in it. DynMarketlifeversion.rar 10. now open your init.sqf and paste this : [] execVM "\life_server\Functions\DynMarket\fn_config.sqf"; 11. now go to the Database and run this query : CREATE TABLE `dynmarket` ( `id` INT NOT NULL DEFAULT 1, `prices` TEXT NOT NULL, PRIMARY KEY (`id`)); INSERT INTO `dynmarket` VALUES (1,'[]'); 12. from this point it will be your own preference to put a button in your Y menu or ether put a option on a AI. for the Y menu follow this : go to your player_inv.hpp and open it and search for Class ButtonSyncData and below that you paste this : class ButtonMarket : Life_RscButtonMenu { idc = 3025; text = "Börse"; onButtonClick = "createDialog ""life_dynmarket_prices"";"; x = 0.26 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH)); y = 0.805; w = (6.25 / 40); h = (1 / 25); }; now open your fn_p_openMenu.sqf and add this code tho the independent class and to the west. ctrlShow[3025,false]; Now if you would like to add this option to an AI or Object add this : this addAction ["Börse abrufen",{createDialog 'life_dynmarket_prices'},"",0,false,false,"",'playerSide isEqualTo civilian']; Well Done recompile your files and you are Ready to go. dialog.rar DynMarket.rar DynMarketlifeversion.rar
  13. 4 likes
    This script stops people from changing their name once they join the server with their first name. Credit goes to some guy named "said11" Go to fn_requestReceived.sqf After failMission "SpyGlass"; }; place this, line ~30 ish if(profileName != _this select 1) exitWith { hint format["Your old nickname %1",_this select 1]; [format["For your key is fixed another nickname, enter your old nickname in the profile of the game!<br/><br/>Your old nickname <t color='#b20303'>%1</t><br/><br/>If you have any problems with the change nickname - refer to the forum <t color='#665bff'>vk.com/russlandlife</t>", _this select 1], "Registered nickname change", "adopt" ] call BIS_fnc_guiMessage; ["NameExists",false,false] call BIS_fnc_endMission; }; Add this new class to your description.ext: class NameExists { title = "Change the nickname"; subTitle = ""; description = "For your key is fixed another nickname, enter your old nickname in the profile of the game!"; pictureBackground = ""; picture = ""; pictureColor[] = {0,0.3,0.6,1}; }; This should work, if it does not let me know.
  14. 3 likes
    MySQL Auto-Backup Summary: This tutorial will show you step by step how to setup automated backups of your MySQL DB every 6 hours on a Windows Server. I will assume your are using MySQL 5.7x64 and Workbench 6.3, but you can adapt this guide to MariaDB and Heidi with the same code. Tutorial: Login to your dedicated server. Download my SQL Backup Zip MySQLBackups.zip Extract the zip file to C:\ Open MySQL Workbench, and login as root. Click on users and privileges: Create a new user called backupadmin: Click on administrative roles, and give our newly created backupadmin user the BackupAdmin role: Now open the MySQLBackups folder you extracted to C:\ Edit mysqlbackup.bat in your preferred editing program. Line 43: Change the password to the password you gave backupadmin. Save and Close. Press windows key and R to bring up the run prompt and type Taskschd.msc. Click create task: End a title and for the task: Go to the trigger tab, and select new. Select a start time of your choosing,and set the repeat to 6 hours:. Go to the actions tab and brows to C:\MySQLBackups\mysqlbackup.bat: All Done! Now your DB will backup every 6 hours, and keep those backups for 7 days.
  15. 3 likes
    Market Display This is a simple Dialog script for the Y-Menu which upon being opened, will pull a group of items from an array and displays a nice little description of the item along with the item's sell price (if any), buy price (if any) and weight. This was made specifically for virtual items and will not work with items such as weapons, clothing, or other items from Arma 3. Preview DISCLAIMER: These scripts were made on and tested on the most recent Altis Life Framework(v5.0.0). They may not work if you are attempting to use them on anything lower. The scripts also do not support Dynamic Markets of any kind. Tutorial 1. In your functions.hpp add the following to dialog\functions: class marketLBChange {}; class marketUpdate {}; class marketMenu {}; 2. Open dialog\functions and make a file called fn_marketLBChange: #include "..\..\script_macros.hpp" /* File: fn_marketLBChange.sqf Author: Bryan "Tonic" Boardwine Modified by Ilusionz */ private _itemControl = _this select 0; private _itemIndex = _this select 1; //Fetch some information. private _iName = _itemControl lbData _itemIndex; private _dName = M_CONFIG(getText,"VirtualItems",_iName,"displayName"); private _bPrice = M_CONFIG(getNumber,"VirtualItems",_iName,"buyPrice"); private _sPrice = M_CONFIG(getNumber,"VirtualItems",_iName,"sellPrice"); private _iWeight = M_CONFIG(getNumber,"VirtualItems",_iName,"weight"); private _iDescrip = M_CONFIG(getText,"VirtualItems",_iName,"description"); ctrlShow [60704,true]; ctrlShow [60705,true]; ctrlShow [60706,true]; ctrlShow [60707,true]; ctrlShow [60708,true]; ctrlShow [60709,true]; ctrlShow [60710,true]; ctrlShow [60711,true]; ctrlShow [60712,true]; ctrlSetText [60704, localize _dName]; ctrlSetText [60710,format ["%1",_iWeight]]; if (!(_bPrice isEqualTo -1)) then { ctrlSetText [60712,format ["$%1",[_bPrice] call life_fnc_numberText]]; } else { ctrlSetText [60712, "N/A"]; }; if (!(_sPrice isEqualTo -1)) then { ctrlSetText [60711,format ["$%1",[_sPrice] call life_fnc_numberText]]; } else { ctrlSetText [60711, "N/A"]; }; (CONTROL(60700,60709)) ctrlSetStructuredText parseText format["%1",_iDescrip]; 3. In dialog\functions make another file called fn_marketMenu.sqf: createDialog "marketdisplay"; [] call life_fnc_marketUpdate; 4. Again in dialog\functions create another file called fn_marketUpdate.sqf: #include "..\..\script_macros.hpp" /* File: fn_marketUpdate.sqf Author: Ilusionz Description: Update and fill the market menu. */ private ["_item_list","_shopItems","_name","_buyPrice","_sellPrice","_weight","_displayName"]; disableSerialization; //Setup control vars. _item_list = CONTROL(60700,67001); ctrlShow [60704,false]; ctrlShow [60705,false]; ctrlShow [60706,false]; ctrlShow [60707,false]; ctrlShow [60708,false]; ctrlShow [60709,false]; ctrlShow [60710,false]; ctrlShow [60711,false]; ctrlShow [60712,false]; //Purge list lbClear _item_list; if (!isClass(missionConfigFile >> "VirtualShops" >> "ymarket")) exitWith {closeDialog 0; hint localize "STR_NOTF_ConfigDoesNotExist";}; ctrlSetText[67003,localize (M_CONFIG(getText,"VirtualShops","ymarket","name"))]; _shopItems = M_CONFIG(getArray,"VirtualShops","ymarket","items"); { _displayName = M_CONFIG(getText,"VirtualItems",_x,"displayName"); _buyPrice = M_CONFIG(getNumber,"VirtualItems",_x,"buyPrice"); _sellPrice = M_CONFIG(getNumber,"VirtualItems",_x,"sellPrice"); _weight = M_CONFIG(getNumber,"VirtualItems",_x,"weight"); _item_list lbAdd format ["%1",(localize _displayName)]; _item_list lbSetData [(lbSize _item_list)-1,_x]; _icon = M_CONFIG(getText,"VirtualItems",_x,"icon"); if (!(_icon isEqualTo "")) then { _item_list lbSetPicture [(lbSize _item_list)-1,_icon]; }; } forEach _shopItems; 5. Open your dialog folder and create market_menu.hpp: class marketDisplay { idd = 60700; name= "marketDisplay"; movingEnable = 0; enableSimulation = 1; class controlsBackground { class Life_RscTitleBackground: Life_RscText { idc = -1; text = "Altis Item Database"; //--- ToDo: Localize; x = 0.298906 * safezoneW + safezoneX; y = 0.27516 * safezoneH + safezoneY; w = 0.170156 * safezoneW; h = 0.022 * safezoneH; 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])"}; }; class MainBackground: Life_RscText { idc = -1; x = 0.298906 * safezoneW + safezoneX; y = 0.2976 * safezoneH + safezoneY; w = 0.402187 * safezoneW; h = 0.407 * safezoneH; colorBackground[] = {0,0,0,0.7}; }; class mText: Life_RscText { idc = -1; text = "Market Database"; //--- ToDo: Localize; x = 0.300969 * safezoneW + safezoneX; y = 0.302 * safezoneH + safezoneY; w = 0.195937 * safezoneW; h = 0.022 * safezoneH; 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 mText2: Life_RscText { idc = -1; text = "Item Information"; //--- ToDo: Localize; x = 0.502062 * safezoneW + safezoneX; y = 0.302 * safezoneH + safezoneY; w = 0.195937 * safezoneW; h = 0.022 * safezoneH; 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 controls { class itemList: Life_RscListBox { idc = 67001; onLBSelChanged = "_this call life_fnc_marketLBChange"; x = 0.304062 * safezoneW + safezoneX; y = 0.3328 * safezoneH + safezoneY; w = 0.190781 * safezoneW; h = 0.363 * safezoneH; }; class Title: Life_RscTitle { idc = 67003; text = "Altis Item Database"; //--- ToDo: Localize; x = 0.298906 * safezoneW + safezoneX; y = 0.2756 * safezoneH + safezoneY; w = 0.170156 * safezoneW; h = 0.022 * safezoneH; colorText[] = {0.95,0.95,0.95,1}; sizeEx = (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * GUI_GRID_H; }; class ButtonClose: Life_RscButtonMenu { onButtonClick = "closeDialog 0;"; idc = 60702; text = "Close"; //--- ToDo: Localize; x = 0.636641 * safezoneW + safezoneX; y = 0.7046 * safezoneH + safezoneY; w = 0.0644531 * safezoneW; h = 0.022 * safezoneH; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.8}; }; class ItemName: Life_RscText { idc = 60704; text = ""; x = 0.497937 * safezoneW + safezoneX; y = 0.335 * safezoneH + safezoneY; w = 0.190781 * safezoneW; h = 0.055 * safezoneH; sizeEx = 2.7 * 0.02; }; class BuyPrice: Life_RscText { idc = 60705; text = "Buy Price:"; //--- ToDo: Localize; x = 0.498969 * safezoneW + safezoneX; y = 0.5308 * safezoneH + safezoneY; w = 0.190781 * safezoneW; h = 0.055 * safezoneH; sizeEx = 2.7 * 0.02; }; class SellPrice: Life_RscText { idc = 60706; text = "Sell Price:"; //--- ToDo: Localize; x = 0.498969 * safezoneW + safezoneX; y = 0.5726 * safezoneH + safezoneY; w = 0.190781 * safezoneW; h = 0.055 * safezoneH; sizeEx = 2.7 * 0.02; }; class Weight: Life_RscText { idc = 60707; text = "Weight:"; //--- ToDo: Localize; x = 0.498969 * safezoneW + safezoneX; y = 0.6166 * safezoneH + safezoneY; w = 0.190781 * safezoneW; h = 0.055 * safezoneH; sizeEx = 2.7 * 0.02; }; class Description: Life_RscStructuredText { idc = 60708; text = "Description:"; //--- ToDo: Localize; x = 0.497937 * safezoneW + safezoneX; y = 0.379 * safezoneH + safezoneY; w = 0.06159 * safezoneW; h = 0.044 * safezoneH; }; class DescriptionText: Life_RscStructuredText { idc = 60709; text = ""; x = 0.497937 * safezoneW + safezoneX; y = 0.4164 * safezoneH + safezoneY; w = 0.195937 * safezoneW; h = 0.11 * safezoneH; }; class WeightNum: Life_RscText { idc = 60710; text = ""; x = 0.587635 * safezoneW + safezoneX; y = 0.6166 * safezoneH + safezoneY; w = 0.190781 * safezoneW; h = 0.055 * safezoneH; colorText[] = {"(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])"}; sizeEx = 2.7 * 0.02; }; class SellNum: Life_RscText { idc = 60711; text = ""; x = 0.587657 * safezoneW + safezoneX; y = 0.5726 * safezoneH + safezoneY; w = 0.190781 * safezoneW; h = 0.055 * safezoneH; colorText[] = {"(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])"}; sizeEx = 2.7 * 0.02; }; class BuyNum: Life_RscText { idc = 60712; text = ""; x = 0.587654 * safezoneW + safezoneX; y = 0.5308 * safezoneH + safezoneY; w = 0.190781 * safezoneW; h = 0.055 * safezoneH; colorText[] = {"(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])"}; sizeEx = 2.7 * 0.02; }; }; }; 6. In your dialog folder, open player_inv.hpp and add the following below ButtonSyncData: class marketButton: Life_RscButtonMenu { idc = 60714; onButtonClick = "[] call life_fnc_marketMenu"; text = "$STR_PM_yMarket"; //--- ToDo: Localize; x = 0.598484 * safezoneW + safezoneX; y = 0.66808 * safezoneH + safezoneY; w = 0.0644531 * safezoneW; h = 0.022 * safezoneH; colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0.8}; }; 7. Open dialog\MasterHandler.hpp and add the following: #include "market_menu.hpp" 8. Open config_vItems.hpp and add the following class below class cop: //THIS IS NOT A SHOP, IT IS JUST THE LIST OF ITEMS THE MARKET PULLS - IT IS IN ALPHABETICAL ORDER class ymarket { name = "STR_Shops_yMarket"; conditions = ""; items[] = {"apple", "blastingcharge", "boltcutter", "cannabis", "catshark", "catshark_raw", "cement", "cocaine_processed", "cocaine_unprocessed", "coffee", "copper_refined", "copper_unrefined", "defibrillator", "defusekit", "diamond_cut", "diamond_uncut", "donuts", "fuelEmpty", "fuelFull", "glass", "goat", "goat_raw", "goldbar", "hen", "hen_raw", "heroin_processed", "heroin_unprocessed", "iron_refined", "iron_unrefined", "lockpick", "mackerel", "mackerel_raw", "marijuana", "mullet", "mullet_raw", "mushrooms", "oil_processed", "oil_unprocessed", "ornate", "ornate_raw", "peach", "pickaxe", "rabbit", "rabbit_raw", "redgull", "rock", "rooster", "rooster_raw", "salema", "salema_raw", "sand", "salt_refined", "salt_unrefined", "sheep", "sheep_raw", "spikeStrip", "storagebig", "storagesmall", "toolkit", "tbacon", "tuna", "tuna_raw", "turtle_soup", "turtle_raw", "waterBottle"}; }; 9. These scripts introduce a new setting needed on every virtual item you would like on your market display. Which is a small description of the item. If you want to, you can remove it in fn_marketLBChange - but I highly recommend keeping it as filler for the menu (plus a little bonus). Here are a few examples of a few I've used this (don't use these as their weights and prices may be different to yours): class marijuana { variable = "marijuana"; displayName = "STR_Item_Marijuana"; weight = 4; buyPrice = 7000; sellPrice = 5500; illegal = true; edible = -1; icon = "icons\ico_marijuana.paa"; description = "Classic OG kush. Snoop would be proud. Sold at any drug dealer."; }; class redgull { variable = "redgull"; displayName = "STR_Item_RedGull"; weight = 1; buyPrice = 1500; sellPrice = 200; illegal = false; edible = 100; icon = "icons\ico_redgull.paa"; description = "Enery drink that certainly doesn't give you wings. Very high in sugar."; }; class salt_unrefined { variable = "saltUnrefined"; displayName = "STR_Item_Salt"; weight = 5; buyPrice = -1; sellPrice = -1; illegal = false; edible = -1; icon = "icons\ico_saltUnprocessed.paa"; description = "Un-refined Salt. Processed at the Salt Processor. Also gathered from the Tears of the Arma Community."; }; 10. Finally, open your Stringtable.xml and add the following: <Key ID="STR_PM_yMarket"> <Original>Market</Original> </Key> <Key ID="STR_Shops_yMarket"> <Original>Altis Market</Original> </Key> And that's it! All done. SIDE NOTE: Make sure any new items you add to the virtual item config are also added to the market array, otherwise they won't show up!
  16. 3 likes
    Vehicle Indicators Using Maverick Application's Indicator script is a nice feature. I decide to replicate it. Although its not the best. Its free. I'm not using this in my server anymore so thought i would release it here. Extract folder "indicators" inside the indicators.rar to a folder called "scripts" in your mission file. Open "Init.sqf" in your mission main directory and add "[] execVM "scripts\indicators\indicatorInit.sqf";". Open "Functions.hpp" and add the code below: class ALRPG_INDICATORSYSTEM { file = "source\game\content\indicators"; class leftIndicatorLight {}; class rightIndicatorLight {}; class startIndicatorLeft {}; class startIndicatorRight {}; }; Open "cfgRemoteExec.hpp" and add the code below: F(life_fnc_leftIndicatorLight,ANYONE) F(life_fnc_rightIndicatorLight,ANYONE) Open "description.ext" and add the code below class sounds: class blinkerclick { name = "blinkerclick"; sound[] = {"\source\sfx\vehicle\blinkerclick_sfx.ogg", 1.0, 1}; titles[] = {}; }; class blinkerstart { name = "blinkerstart"; sound[] = {"\source\sfx\vehicle\blinkerstart_sfx.ogg", 1.0, 1}; titles[] = {}; }; You will have to change specific file pathing yourself i left it there as an anti-leech for noobs, its pretty self explanatory if you cannot do it then please shut down your server to save everyone some trouble. If you're willing to learn go BI Wiki, everything is there. sounds.rar
  17. 3 likes
    SOURCE: http://www.armaholic.com/page.php?id=20465 Fockers Arma3 Scripting Guide Author: Mikie boy Author Website: http://fockers.moonfruit.com Version: 3.0 Short description: This is an old but useful guide from 2013. Chapter 1, 2 and 3 of Fockers Arma3 Scripting Guide Download Link: Fockers_Arma_Scripting_guide_v30.7z Features: The first chapter covers the basics of: Setting up a file, showscripterrors, and window mode Variables, assignment, initialization, and variable types. Init.sqf, interactions between the game world and the scripts. Alignment of code, bracket usage and setting out code. If/else statement, nested if/else statements. While, and both for-loops types. Commands - player, waituntil, getpos, createvehicle, createunit, hint, format, sleep and a few other bits. And a lot of reference on using BIS forums and the Wiki. The second chapter covers the basics of: Part 1: Basic Arrays Selecting elements Subtracting Addition forEach command Part 2: Basic Functions Local and global call Spawn Part 3: Making a basic Patrol function. Few other commands have been thrown in The third chapter covers the basics of: Part 1: Eventhandlers adding removing use of scope and exitwith command example usage and creation of eject and mine functions Part 2: Get and set Variable handle variables Create a driving licence system using eventhandlers and get/set variables to control access to vehicles Few other commands have been thrown in.
  18. 3 likes
    Welcome to the official advertisement thread for XtG Community's Altis Life HD Server! Information Links: Website Forums XtG Community AU/NZ - Altis Life HD | Art Gallery | AI Missions | 250k Start Current Server Patch: V1 Connection Info: 45.121.210.47:2372 Query Info: 45.121.210.47:2373 So i decided to come back to the Altis Life RPG forums just to advertise my server, I hope i don't get banned again. XtG Community is starting to finally grow grossing at the 4th best Altis Life server in Australia. Wanted to say a huge thanks to all of our player supporters and community members. What makes us different? The server in general. We're not affiliated with the AltisLifeRPG Framework, We still use Tonics database functions etc but most of the mission file of AltisLifeRPG have been removed and re-written into a new format "ALRPG FrameworK" - We created our map layout with all of its resources and content. Bringing you something different. Elite IV - Owner & Developer of XtG Community - "It's been a dream of mine to operate and develop a community from the ground up and keep it active with sum of players, Ever since the growth of XtG Community (2010) we have expanded our knowledge and grown so well i must say we're here to stay. I'm currently 19 years old at the date of this post, with somewhat advanced knowledge in Java and Intermediate knowledge in C#/C++ & Arma 3 Scripting. Running the server with very little money budget! I ain't giving up." Feature Highlights of the server: Dynamic Market System Convoy Missions The Purge Events Immersive Introduction Visually & Audio Resistance Faction / Bases Toilet Script Cell Phone Script Indicator Script Casino Skilling System Active & Supportive Staff Friendly Community Custom Vehicle Skins For Civilian & Police extDB Loading Screen Speed Cameras Active Playerbase & Staff Shipwrecks Drag Dead Bodies & Hide Them Unique Server Layout Overwhelming Amount of Farm-able Resources Steal Kidneys Function Black Market System Highscores Ranking System for Players/Gangs/Player Levels 0 Client & Server RPT Errors. Storyline In the year 2019 a country called Australia there lived a population of people of 22 million residents and counting. All mixed of Police, Medics, Resistance, Civilians, Military Personal and more. It was a everyday life up until the crises of the economy crash. Everything like cars, food, jobs and resources including drugs and guns dropped dramatically in price putting the state at warfare, the people never really knew the truth to why the economy crashed. Rumor had it that some high head was controlling the markets and then died. The death of the government associate was extremely overwhelming on the stock marketers and everyone to this day is still trying to piece everything correctly. Most people believe and blame the Resistance for the assassination of the government associate which caused the economy to crash in an attempt to try and bring everyone to their knees. The only problem is, That's what the media said. Before the crisis happened of the government politician being killed, someone higher than him wanted to be further up the markets, wanted more control, wanted everything. HE hired the hit of the government politician and anyone involving the hit was.... killed. Other government politicians were promised if they were to chip in to the deal at around 3 million each (With all 20 politics) they would get 15% each zone on the markets. That didn't happen. Instead he took it all, using the money they given him to hire a hit. A resistance members is true to their code and live by the means of "Assassination" in the true world of real organized crime, Resistance live to the name. They are the only people left in the world to know what really happened. Now the government has ruled out any private contractors and mercenary's. In an attempt to shut them up hes put every military personal, DEA, SAS, AOS and even the damn cop force to look and KILL ON SIGHT any contractor or anyone part of the hitmen underground. The Resistance now have to hide and gather funds in the illegal lands just south of the restricted border where no government agent dares to cross and take private contracts through their encrypted database, Even some corrupt police officers use the hitman network still. In the realistic world Civilians still think Resistance are bad people and do things for a bad cause and the Government doing things for a good cause but the Resistance still yet have something to prove to the population of Australia. Proudly Supported By: Special thanks to: Media - Videos & Screenshots
  19. 3 likes
    If you dont know how to do that, why did you purchase the script?
  20. 3 likes
    Well I have used some of the tutorials found here and thought it is only fair for me to put one up for what I made the other day. Apologies if my script is not optimised etc, one of my friends told me I write "wet" code. Difficulty: Easy Framework Version: 4.4r3 10 damage every 5 seconds can be set to whatever you want. If wearing the set clothing no damage but you still get the effects. Right start with the map side, in the mission editor you need to create a trigger point, the size does not matter, you can have it as big or as small as you want. Once created you need to edit its properties so right click the trigger point and click properties. you should get this menu. the Variable name can be anything you want, you need to set the "Trigger: Activation" and "Trigger: Expression" Trigger: Activation Type: None Activation: Anybody Activation Type: Present Repeatable: Yes Server Only: No Trigger: Expression Condition: this && (local player) && (vehicle player in thisList) On Activation: hint parseText format ["<t color='#0eb0ff'>You have entered a radioactive area!</t>"]; player setVariable ["exitRad",false]; player call life_fnc_radArea; On Deactivation: hint parseText format ["<t color='#0eb0ff'>You are leaving the radioactive area!</t>"]; player setVariable ["exitRad",true]; Click ok, save the mission and that is the map side done. Now for the mission file. Create a new file in Altis_Life.Altis\core\functions called fn_radArea.sqf, then copy and paste the below script inside it. If you want to set how often damage is caused just edit the "sleep 5," to however long you want. If you want to edit how much damage is caused edit the "_player setDamage (_damage + 0.1)" remember 0 is 100% of health 1 is dead. To set what clothing is required to be warn edit the "if ((_uniform isEqualTo "U_B_Wetsuit") && (_vest isEqualTo "V_RebreatherB") && (_goggles isEqualTo "G_Diving")) then". #include "..\..\script_macros.hpp" /* fn_radArea.sqf Created by Fuel for RebornRoleplay.com [UK/EU] Reborn Roleplay | RebornRoleplay.co.uk */ _player = [_this,0,objNull,[objNull]] call BIS_fnc_param; _damage = getDammage _player; _uniform = uniform _player; _vest = vest _player; _goggles = goggles _player; _rad1 = ppEffectCreate ["ChromAberration",200]; _rad2 = ppEffectCreate ["DynamicBlur",500]; _rad3 = ppEffectCreate ["FilmGrain",2000]; if (!alive _player || (_damage == 1) || (_player getVariable ["exitRad",true])) exitWith { _player setVariable ["exitRad",true]; _rad1 ppEffectEnable false; _rad1 ppEffectAdjust [0,0,true]; _rad1 ppEffectCommit 1; _rad2 ppEffectEnable false; _rad2 ppEffectAdjust [0]; _rad2 ppEffectCommit 1; _rad3 ppEffectEnable false; _rad3 ppEffectAdjust [0,0,0,0,0,true]; _rad3 ppEffectCommit 1;}; // this is the check to see if they are wearing protective clothing if ((_uniform isEqualTo "U_B_Wetsuit") && (_vest isEqualTo "V_RebreatherB") && (_goggles isEqualTo "G_Diving")) then { //rad sound _player say2d "rad"; // edit this for the length of the effect for "_i" from 0 to 4 do { _rad1 ppEffectEnable true; _rad1 ppEffectAdjust [-0.02,0,true]; _rad1 ppEffectCommit 1; _rad2 ppEffectEnable true; _rad2 ppEffectAdjust [0.03]; _rad2 ppEffectCommit 1; _rad3 ppEffectEnable true; _rad3 ppEffectAdjust [0.12,1.52,3.54,2,2,true]; _rad3 ppEffectCommit 1; }; sleep 5; //loops the script until they exit [_player] remoteExec ["life_fnc_radArea",_player]; } else { //rad sound _player say2d "rad"; // edit this for the length of the effect for "_i" from 0 to 4 do { _rad1 ppEffectEnable true; _rad1 ppEffectAdjust [-0.02,0,true]; _rad1 ppEffectCommit 1; _rad2 ppEffectEnable true; _rad2 ppEffectAdjust [0.03]; _rad2 ppEffectCommit 1; _rad3 ppEffectEnable true; _rad3 ppEffectAdjust [0.12,1.52,3.54,2,2,true]; _rad3 ppEffectCommit 1; }; sleep 5; //set the damage to player _player setDamage (_damage + 0.1); //loops the script until they exit [_player] remoteExec ["life_fnc_radArea",_player]; }; Now open your Functions.hpp, and paste class radArea {}; inside of class Functions { file = "core\functions"; Now open cfgRemoteEcec.hpp, and paste F(life_fnc_radArea,CLIENT) inside of class CfgRemoteExec { class Functions { mode = 1; jip = 0; /* Client only functions */ Now open description.ext, and paste class rad { name = "rad"; sound[] = {"\sounds\rad.ogg", 0.25, 1}; titles[] = {}; }; inside of class CfgSounds { sounds[] = {}; Now copy the attached sound file called rad.ogg and paste it into Altis_life.Altis/sounds/ And you are done, I do not think I have missed anything. here if a quick video of it in action. rad.ogg
  21. 3 likes
    Original Post - N/A Original Author - Shakir Darwish Open your "dialog" folder and then open "impound.hpp" Add this to classSellCar: class InsureCar : life_RscButtonMenu { idc = 97480; text = "ensure" ; onButtonClick = "[] call life_fnc_insureCar;"; x = 0.43 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); and = 0 . 9 - ( 1 / 25 ); w = (6.25 / 40); h = (1 / 25); }; Go to dialog>functions and add a new file named "fn_insureCar.sqf" Paste this in the new document: #include "..\..\script_macros.hpp" /* File: fn_insureCar.sqf Author: Guit0x "Lintox" Description: Insure a vehicle from the garage. */ private["_vehicle","_vehicleLife","_vid","_pid","_unit","_multiplier","_price","_purchasePrice","_insurancePrice"]; disableSerialization; if ((lbCurSel 2802) isEqualTo -1) exitWith {hint localize "STR_Global_NoSelection"}; _vehicle = lbData[2802,(lbCurSel 2802)]; _vehicle = (call compile format["%1",_vehicle]) select 0; _vehicleLife = _vehicle; _vid = lbValue [ 2802 , (lbCurSel 2802 )]; _pid = getPlayerUID player; _unit = player; if(isNil "_vehicle") exitWith {hint localize "STR_Garage_Selection_Error"}; if ((time - life_action_delay) < 1.5) exitWith {hint localize "STR_NOTF_ActionDelay";}; if (!isClass (missionConfigFile >> "LifeCfgVehicles" >> _vehicleLife)) then { _vehicleLife = "Default"; //Use Default class if it doesn't exist diag_log format["%1: LifeCfgVehicles class doesn't exist",_vehicle]; }; _price = M_CONFIG(getNumber,"LifeCfgVehicles",_vehicleLife,"price"); switch (playerSide) do { case civilian: { _multiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_CIVILIAN"); _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN"); }; case west: { _multiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_COP"); _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP"); }; case independent: { _multiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_MEDIC"); _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC"); }; case east: { _multiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_OPFOR"); _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR"); }; }; _insurancePrice = _purchasePrice * _multiplier; if(!(_insurancePrice isEqualType 0) || _insurancePrice < 1) then {_insurancePrice = 500}; if(BANK < _insurancePrice) exitWith {hint format[(localize "STR_GNOTF_NotEnoughMoney"),[_insurancePrice] call life_fnc_numberText];}; if (life_HC_isActive) then { [_vid,_pid,_insurancePrice,player,life_garage_type] remoteExecCall ["HC_fnc_insureCar",HC_Life]; } else { [_vid,_pid,_insurancePrice,player,life_garage_type] remoteExecCall ["TON_fnc_insureCar",RSERV]; }; hint localize "STR_InsuranceApply"; BANK = BANK - _insurancePrice; life_action_delay = time; closeDialog 0; Open "function.hpp" in your "dialog" folder and add: class Dialog_Controls { file = "dialog\function"; [...] class insureCar {}; [...] }; Then open your "functions" folder in your "dialog" folder and open "fn_garageLBChange.sqf" Replace this: private["_control","_index","_className","_classNameLife","_dataArr","_vehicleColor","_vehicleInfo","_trunkSpace","_sellPrice","_retrievePrice","_sellMultiplier","_price","_storageFee","_purchasePrice"]; With this: private["_control","_index","_className","_classNameLife","_dataArr","_vehicleColor","_vehicleInfo","_trunkSpace","_sellPrice","_retrievePrice","_sellMultiplier","_insurance","_insuranceMultiplier","_price","_storageFee","_purchasePrice","_insurancePrice"]; After this: _classNameLife = _className; Add this: _insurance = (_dataArr select 2 ); Replace this: switch (playerSide) do { case civilian: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_CIVILIAN"); }; case west: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_COP"); }; case independent: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_MEDIC"); }; case east: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_OPFOR"); }; }; With this: switch (playerSide) do { case civilian: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_CIVILIAN"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_CIVILIAN"); }; case west: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_COP"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_COP"); }; case independent: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_MEDIC"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_MEDIC"); }; case east: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_OPFOR"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_OPFOR"); }; }; After this: _sellPrice = _purchasePrice * _sellMultiplier; Add this: _insurancePrice = _purchasePrice * _insuranceMultiplier; After this: if (!(_retrievePrice isEqualType 0) || _retrievePrice < 1) then {_retrievePrice = 500;}; Add this: if (!(_insurancePrice isEqualType 0) || _insurancePrice < 1) then {_insurancePrice = 500;}; Replace this: (CONTROL(2800,2803)) ctrlSetStructuredText parseText format[ (localize "STR_Shop_Veh_UI_RetrievalP")+ " <t color='#8cff9b'>$%1</t><br/> " +(localize "STR_Shop_Veh_UI_SellP")+ " <t color='#8cff9b'>$%2</t><br/> " +(localize "STR_Shop_Veh_UI_Color")+ " %8<br/> " +(localize "STR_Shop_Veh_UI_MaxSpeed")+ " %3 km/h<br/> " +(localize "STR_Shop_Veh_UI_HPower")+ " %4<br/> " +(localize "STR_Shop_Veh_UI_PSeats")+ " %5<br/> " +(localize "STR_Shop_Veh_UI_Trunk")+ " %6<br/> " +(localize "STR_Shop_Veh_UI_Fuel")+ " %7 ", With this: (CONTROL(2800,2803)) ctrlSetStructuredText parseText format[ (localize "STR_Shop_Veh_UI_RetrievalP")+ " <t color='#8cff9b'>$%1</t><br/> " +(localize "STR_Shop_Veh_UI_SellP")+ " <t color='#8cff9b'>$%2</t><br/> Prix de l'assurance: <t color='#8cff9b'>$%9</t><br/> State Insurance: %10 <br/> " +(localize "STR_Shop_Veh_UI_Color")+ " <t color='#8cff9b'>%8</t><br/> " +(localize "STR_Shop_Veh_UI_MaxSpeed")+ " <t color='#8cff9b'>%3 km/h</t><br/> " +(localize "STR_Shop_Veh_UI_HPower")+ " <t color='#8cff9b'>%4</t><br/> " +(localize "STR_Shop_Veh_UI_PSeats")+ " <t color='#8cff9b'>%5</t><br/> " +(localize "STR_Shop_Veh_UI_Trunk")+ " <t color='#8cff9b'>%6</t><br/> " +(localize "STR_Shop_Veh_UI_Fuel")+ " <t color='#8cff9b'>%7</t> ", Replace this: (_vehicleInfo select 12), _vehicleColor ]; With this: (_vehicleInfo select 12), _vehicleColor, [_insurancePrice] call life_fnc_numberText, if(_insurance == 1) then {"<t color='#8cff9b'>Assuré</t>"} else {"<t color='#FF0000'>Pas d'assurance</t>"}, (_vehicleInfo select 9) ]; if(_insurance == 1) then { ctrlShow [97480,False]; }else{ ctrlShow [97480,True]; }; Open dialog>function>fn_impoundMenu.sqf Replace this: _tmp = [(_x select 2),(_x select 8)]; With this: _tmp = [(_x select 2),(_x select 8),(_x select 9)]; Open CfgRemoteExec.hpp and add this in server only functions: F(TON_fnc_insureCar,SERVER) In Headless Client functions: F(HC_fnc_insureCar,HC) Open your stringtable.xml and add this: <Key ID="STR_InsuranceApply"> <Original>You just insure your vehicle you are now protected against explosions!</Original> < Czech > Now you insure your vehicle is now protected against explosions ! < / Czech > < Spanish > You just make sure your vehicle is now protected against explosions ! < / Spanish > < Italian > Just ensure your vehicle you are now protected against explosions ! < / Italian > < Polish > Just insure your vehicle you are now protected from explosion ! < / Polish > < Russian > You just insure your car, you are now protected against explosions ! < / Russian > < French > You just make your vehicle you are now protected against explosions ! < / French > < Portuguese > You just hold your vehicle you are now protected against explosions ! < / Portuguese > < German > They only insure your vehicle, you are now protected against explosions ! < / German > </Key> Under "<Key ID="STR_pInAct_SellGarage" Then open your Config_Master.hpp and add: /* Vehicle Insurance Prices */ vehicle_insurance_multiplier_CIVILIAN = .25; //Civilian Vehicle Insurance Price = Vehicle Buy Price * multiplier vehicle_insurance_multiplier_COP = .1; //Cop Vehicle Insurance Price = Vehicle Buy Price * multiplier vehicle_insurance_multiplier_MEDIC = .1; //Medic Vehicle Insurance Price = Vehicle Buy Price * multiplier vehicle_insurance_multiplier_OPFOR = -1; // -- NOT IN USE -- Simply left in for east support. In life_server: Open "config.cpp" and under class Ton_System (both life and hc) add: class insureCar {}; In functions>systems>fn_spawnVehicle.sqf: Replace this: _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid]; With this: _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist, insure FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid]; Replace this: _vehicle setVariable ["dbInfo",[(_vInfo select 4),(_vInfo select 7)],true]; With this: _vehicle setVariable ["dbInfo",[(_vInfo select 4),(_vInfo select 7),(_vInfo select 14)],true]; Replace this: [1,_spawntext] remoteExecCall ["life_fnc_broadcast",_unit]; serv_sv_use deleteAt _servIndex; With this: if ((_vInfo select 14) isEqualTo 1) then { [ 1 , "Your vehicle is available and it is assured!" ] RemoteExecCall [ "life_fnc_broadcast" , _unit]; }else{ [ 1 , "Your vehicle is available but is not insured!" ] RemoteExecCall [ "life_fnc_broadcast" , _unit]; }; serv_sv_use deleteAt _servIndex; In functions>systems create a new file named "fn_insureCar.sqf" and paste this: /* File: fn_insureCar.sqf Author: Guit0x "Lintox" Description: Insure a vehicle from the garage. */ private["_vid","_pid","_query","_sql","_unit","_insurancePrice","_thread"]; _vid = [_this,0,-1,[0]] call BIS_fnc_param; _pid = [_this,1,"",[""]] call BIS_fnc_param; _unit = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param; _insurancePrice = [_this,3,0,[0]] call BIS_fnc_param; _query = format["UPDATE vehicles SET insure='1' WHERE pid='%1' AND id='%2'",_pid,_vid]; waitUntil { ! DB_Async_Active}; _thread = [_query,1] call DB_fnc_asyncCall; For life_hc paste this instead: /* File: fn_insureCar.sqf Author: Guit0x "Lintox" Description: Insure a vehicle from the garage. */ private["_vid","_pid","_query","_sql","_unit","_insurancePrice","_thread"]; _vid = [_this,0,-1,[0]] call BIS_fnc_param; _pid = [_this,1,"",[""]] call BIS_fnc_param; _unit = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param; _insurancePrice = [_this,3,0,[0]] call BIS_fnc_param; _query = format["UPDATE vehicles SET insure=‘1' WHERE pid='%1' AND id='%2'",_pid,_vid]; waitUntil { ! DB_Async_Active}; _thread = [_query,1] call HC_fnc_asyncCall; In FSM>cleanup.fsm replace the entire document with: /*%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>*/ For life_hc paste this instead: /*%FSM<COMPILE "D:\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, Server-Side Cleanup">*/ /*%FSM<HEAD>*/ /* item0[] = {"init",0,250,-65.004578,-391.651611,24.995417,-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[] = {"true",8,218,-54.709698,75.189262,35.290302,125.189262,0.000000,"true"}; 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,-311.750000,-203.033707,-303.750000,-195.033707,0.000000,""}; link0[] = {0,1}; link1[] = {1,2}; link2[] = {2,4}; link3[] = {3,6}; link4[] = {4,5}; link5[] = {5,3}; link6[] = {6,7}; link7[] = {7,2}; globals[] = {0.000000,0,0,0,0,640,480,1,46,6316128,1,-629.444153,611.207214,293.309357,-434.050568,1243,885,1}; window[] = {2,-1,-1,-1,-1,985,225,1868,225,3,1261}; *//*%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;"/*%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 vehicule !"";" \n "diag_log format[""insureSystem = %1 "", _insureSystem];" \n "if(_insureSystem == 1) then " \n "{" \ 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_0 = [_this,1] call HC_fnc_asyncCall;" \n "};" \ N "}" \ N " else " \n "{" \ 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 "{" \ N " _thread = [_this,1] call HC_fnc_asyncCall;" \n "};" \ N "};" \ N "};" \ N "if(!isNil ""_x"" && {!isNull _x}) then {" \n "deleteVehicle _x;" \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 vehicule !"";" \n "diag_log format[""insureSystem = %1 "", _insureSystem];" \n "if(_insureSystem == 1) then " \n "{" \ 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_0 = [_this,1] call HC_fnc_asyncCall;" \n "};" \ N "}" \ N " else " \n "{" \ 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 "{" \ N " _thread = [_this,1] call HC_fnc_asyncCall;" \n "};" \ N "};" \ N "};" \ N "if(!isNil ""_x"" && {!isNull _x}) then {" \n "deleteVehicle _x;" \n "};" \ N "};" \ N "} foreach allMissionObjects ""Air"";" \n "" \ N "_cars = time;" \n "" \ N "//Group cleanup." \n "{" \ N " if(count units _x == 0 && local _x) then {" \n "deleteGroup _x;" \n "};" \ N "} foreach allGroups;"/*%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>*/ }; initState="init"; finalStates[] = { }; }; /*%FSM</COMPILE>*/ In functions>systems>fn_getVehicles.sqf: Replace this: _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid]; With this: _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, insure FROM vehicles WHERE pid='%1' AND alive='1' AND active='0' AND side='%2' AND type='%3'",_pid,_side,_type]; Run this query in your SQL Database: ALTER TABLE vehicles ADD insure INT(1) NOT NULL DEFAULT '0'; Done!
  22. 3 likes
    ============================================================================================================ Difficulty: Easy Tutorial By: Hyper4u ============================================================================================================ Open fn_keyHandler.sqf add save and your done! now press "§" button ingame on a vehicle with a player in or just a player Here are the different key codes you can use AND DONT FORGET TO LEAVE A LIKE! THANKS
  23. 2 likes
    Hi guys, my english is not so good sorry. 1.Go into your database and run this code on your sql console. ALTER TABLE `players` ADD COLUMN `example_level` ENUM('0','1','2','3') NOT NULL DEFAULT '0' COLLATE 'latin1_swedish_ci'; 2.Go into life_server\Functions\MySQL\fn_queryRequest.sqf Now, I will add new level to civilian, you can add new level to other sides. Find this code at "fn_queryRequest.sqf" case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime FROM players WHERE pid='%1'",_uid];}; Then, add "example_level" to end. Like this, case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime, example_level FROM players WHERE pid='%1'",_uid];}; Our level is 13rd in query command, this is important for us. Go into your "core\session\fn_requestReceived.sqf" and find "case civilian:" case civilian: { life_is_arrested = _this select 7; CONST(life_coplevel, 0); CONST(life_medicLevel, 0); life_houses = _this select (_count - 3); if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then { life_hunger = ((_this select 9) select 0); life_thirst = ((_this select 9) select 1); player setDamage ((_this select 9) select 2); }; And add "example_level" under medic_level.I wrote "_this select 13" because "example_level" in 13rd place in my "fn_queryRequest.sqf" If you add your new level to other sides, you must write that to the side of you wrote. Like this, case civilian: { life_is_arrested = _this select 7; CONST(life_coplevel, 0); CONST(life_medicLevel, 0); CONST(life_examplelevel,(_this select 13)); life_houses = _this select (_count - 3); if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then { life_hunger = ((_this select 9) select 0); life_thirst = ((_this select 9) select 1); player setDamage ((_this select 9) select 2); }; Finally you can use your level at other scripts. Example, if ((FETCH_CONST(life_examplelevel) isEqualTo 0) && (FETCH_CONST(life_adminlevel) isEqualTo 0)) then { ["NotWhitelisted",false,true] call BIS_fnc_endMission; sleep 35; };
  24. 2 likes
    infiSTAR_config.sqf /* The following 3 options can be disabled by putting the value to -1. For example "_TGV = -1;" */ /* Terrain Grid Value */ _TGV = -1; /* 50, 25, 12.5 */ /* if set to 50 grass will be very low for better client FPS.. default is 25 ~35 is good performance and grass :) */ /* ViewDistance Value */ _VDV = -1; /* ObjectViewDistance */ _VOV = -1;
  25. 2 likes
    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.
  26. 2 likes
    Hello @XtG Community, please open up a ticket on our website and put something in the title that we can find you quickly. We are sorry that you were not able to effectively reach out to us as we are indeed very busy. But the change you need should be just a couple of lines, and we will try to get you an answer on that ticket tomorrow then Yours sincerly, Maverick Applications
  27. 2 likes
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Difficulty: Medium Author: stevemcgarrettthierry support by: @harmdhast Translate and adjuste by: MoNtEcRiStO© Source: AltisDev.com Link -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- First we put the BEC localhost C:\Windows\System32\drivers\etc and you put at the end this: 127.0.0.1 ibattle.org 127.0.0.1 www.ibattle.org look like: # Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost 127.0.0.1 localhost 127.0.0.1 ibattle.org 127.0.0.1 www.ibattle.org Now the BEC is at localhost. Step 1: Download: http://ibattle.org/downloads/ Step 2: in Bec\Config->open->config.cfg you have to change all maj so/IP /PORT/BEPATH vvv# Set the ip to your server. normally 127.0.0.1 will be fine. IP = METTRE IP DU SERVER PAS LOCAL # Set the port to the server. default port is 2302 Port = METTRE PORT DU RCON # Set the path to the BattlEye directory that is currently in use by the server. BePath = config\BattlEye CHEMIN VERS BEPATH ACTIVE DEFAULT VOTRE DOSSIER config\BattlEye Go ligne 90 : # Set the path to the file containing whitelisted guids. WhiteListFile = WhiteList.txt add this # befor: WhiteListFile = WhiteList.txt like that: # Set the path to the file containing whitelisted guids. # WhiteListFile = WhiteList.txt go down config.cfg and search for: #–------------------------------------------------------------------------------------------------------ [Reporter] #-------------------------------------------------------------------------------------------------------- # Reporter account. Fill in the username and password for your reporter account. # GameHacks, BattlEye Hacks will be reported to a database. all players who connect will also be checked against this database. # Set the Username for your account #User = alfred # Set the Password for your account #Password = Password Replace the Password for your rcon password. Now we have finish with the config.cfg Now open Scheduler.xml in the same folder and replace all by that [edit the server message as you wish] <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <Scheduler> <job id='0'> <day>1,2,3,4,5,6,7</day> <start>000120</start> <runtime>000800</runtime> <loop>-1</loop> <cmd>say -1 INFO ! MOTDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX MOTD|| </cmd> </job> <job id='1'> <day>1,2,3,4,5,6,7</day> <start>000124</start> <runtime>013000</runtime> <loop>-1</loop> <cmd>say -1 INFO ! Server : The server reboot 5 times per day ! (00H00 / 06H00 / 12H00 / 18H00 / 00H00)</cmd> </job> <job id='2'> <day>1,2,3,4,5,6,7</day> <start>000128</start> <runtime>001200</runtime> <loop>-1</loop> <cmd>say -1 Welcom to xxxxxxx !</cmd> </job> <job id='3'> <day>1,2,3,4,5,6,7</day> <start>23:00:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 1 hrs.</cmd> </job> <job id='4'> <day>1,2,3,4,5,6,7</day> <start>23:30:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 30 minutes.</cmd> </job> <job id='5'> <day>1,2,3,4,5,6,7</day> <start>23:45:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 15 minutes.</cmd> </job> <job id='6'> <day>1,2,3,4,5,6,7</day> <start>23:55:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 5 minutes.. Dont forget SYNC.</cmd> </job> <job id='7'> <day>1,2,3,4,5,6,7</day> <start>23:59:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 1 minutes.</cmd> </job> <job id='8'> <day>1,2,3,4,5,6,7</day> <start>23:59:45</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 15 secondes.</cmd> </job> <job id='9'> <day>1,2,3,4,5,6,7</day> <start>23:59:55</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 5 secondes.</cmd> </job> <job id='10'> <day>1,2,3,4,5,6,7</day> <start>05:30:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>C:\Users\root\Desktop\Arma\@STARTALTISLIFE.bat</cmd> </job> <job id='11'> <day>1,2,3,4,5,6,7</day> <start>05:00:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 1 hrs.</cmd> </job> <job id='12'> <day>1,2,3,4,5,6,7</day> <start>05:30:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 30 minutes.</cmd> </job> <job id='13'> <day>1,2,3,4,5,6,7</day> <start>05:45:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 15 minutes.</cmd> </job> <job id='14'> <day>1,2,3,4,5,6,7</day> <start>05:55:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 5 minutes.. Dont forget SYNC</cmd> </job> <job id='15'> <day>1,2,3,4,5,6,7</day> <start>05:59:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Le serveur reboot dans 1 minutes.</cmd> </job> <job id='16'> <day>1,2,3,4,5,6,7</day> <start>06:00:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>C:\Users\root\Desktop\Arma\@STARTALTISLIFE.bat</cmd> </job> <job id='17'> <day>1,2,3,4,5,6,7</day> <start>11:00:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 1 hrs.</cmd> </job> <job id='18'> <day>1,2,3,4,5,6,7</day> <start>11:30:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 30 minutes.</cmd> </job> <job id='19'> <day>1,2,3,4,5,6,7</day> <start>11:45:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 15 minutes.</cmd> </job> <job id='20'> <day>1,2,3,4,5,6,7</day> <start>11:55:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 5 minutes.. Dont forget SYNC</cmd> </job> <job id='21'> <day>1,2,3,4,5,6,7</day> <start>11:59:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Le serveur reboot dans 1 minutes.</cmd> </job> <job id='22'> <day>1,2,3,4,5,6,7</day> <start>11:59:45</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 15 minutes.</cmd> </job> <job id='23'> <day>1,2,3,4,5,6,7</day> <start>11:59:55</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 5 secondes.</cmd> </job> <job id='24'> <day>1,2,3,4,5,6,7</day> <start>12:00:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>C:\Users\root\Desktop\Arma\@STARTALTISLIFE.bat</cmd> </job> <job id='25'> <day>1,2,3,4,5,6,7</day> <start>17:00:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 1 hrs.</cmd> </job> <job id='26'> <day>1,2,3,4,5,6,7</day> <start>17:30:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 30 minutes.</cmd> </job> <job id='27'> <day>1,2,3,4,5,6,7</day> <start>17:45:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 15 minutes.</cmd> </job> <job id='28'> <day>1,2,3,4,5,6,7</day> <start>17:55:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 5 minutes.. Dont forget SYNC</cmd> </job> <job id='29'> <day>1,2,3,4,5,6,7</day> <start>17:59:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Le serveur reboot dans 1 minutes.</cmd> </job> <job id='30'> <day>1,2,3,4,5,6,7</day> <start>17:59:45</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 15 minutes.</cmd> </job> <job id='31'> <day>1,2,3,4,5,6,7</day> <start>17:59:55</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 5 secondes.</cmd> </job> <job id='32'> <day>1,2,3,4,5,6,7</day> <start>18:00:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>C:\Users\root\Desktop\Arma\@STARTALTISLIFE.bat</cmd> </job> <job id='33'> <day>1,2,3,4,5,6,7</day> <start>23:00:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 1 hrs.</cmd> </job> <job id='34'> <day>1,2,3,4,5,6,7</day> <start>23:30:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 30 minutes.</cmd> </job> <job id='35'> <day>1,2,3,4,5,6,7</day> <start>23:45:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 15 minutes.</cmd> </job> <job id='36'> <day>1,2,3,4,5,6,7</day> <start>23:55:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 5 minutes.. Dont forget SYNC</cmd> </job> <job id='37'> <day>1,2,3,4,5,6,7</day> <start>23:59:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Le serveur reboot dans 1 minutes.</cmd> </job> <job id='38'> <day>1,2,3,4,5,6,7</day> <start>23:59:45</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 15 minutes.</cmd> </job> <job id='39'> <day>1,2,3,4,5,6,7</day> <start>23:59:55</start> <runtime>000000</runtime> <loop>0</loop> <cmd>say -1 Server reboot in 5 secondes.</cmd> </job> <job id='40'> <day>1,2,3,4,5,6,7</day> <start>00:00:00</start> <runtime>000000</runtime> <loop>0</loop> <cmd>C:\Users\root\Desktop\Arma\@STARTALTISLIFE.bat</cmd> </job> </Scheduler> Step 3: Edit your .bat start "arma3" /min /high "ARMA 3 root" -port=2302 -ip=VOTRE IP [email protected]_server;@extDB2;@infiSTAR_A3 -noPause -name=cfg -profiles=config -config=config\server.cfg -noCB -maxMem=10000 -cpuCount=4 @echo off taskkill /f /fi "status eq not responding" /im arma3serverexe taskkill /f /im arma3server.exe timeout 1 cd C:\VOTRE CHEMIN VERS ARMA 3 timeout 3 start "arma3" /min /high "c:\ARMA 3 root" -port=2302 -ip=VOTRE IP [email protected]_server;@extDB2;@infiSTAR_A3 -noPause -name=cfg -profiles=config -config=config\server.cfg -noCB -maxMem=10000 -cpuCount=4 timeout 3 echo ARMA 3 launch timeout 30 cd "C:ROOT of BECEXE & Start Bec.exe myParam exit Now for the .bat is done! Go to the config\BattlEye root RConPassword YOUR PASSWORD IN THE CONFIG.SQF BEC RConip IP THE SPECIFIC IP NOT THIS 127.0.0.1 BECAUSE IS A DISTANCE CONEXION RConport PORT WE RECOMMEND 2312 HAVE TOBE PUT IN CONFIG.SQF BEC OF THE BEC MaxPing 350 Launch the .bat DONE !
  28. 2 likes
    ANIMAL TRACKING DESCRIPTION It can help finding animals when you are hunting by informing you about nearby animals (sheep, goats, roosters and hens). It provides information about the type of animals, it's generic distance and generic direction. In order to keep it realistic like real hunting tracking, it does not provide compass bearings but directions relative to where you are facing (ahead, right, left, behind) actually dividing your relative orientation circle in quadrants. The distance information also simulates the way a hunters looks for animal traces so "very recent traces" means less than 50m away, "recent" means 50-100 meters and "old" means 100-200 meters. It works only when you are on foot (not on a vehicle). In order to use that, you have to purchase the introduced Virtual Item "Hunting Kit", available at the Market. It is tested in 4.4r3 and works without any problems. I hope, I did not forget anything. The script is written by me so there are no copyright issues. You may use it in your servers or modify it to serve your needs. Just don't sell it as is, since it is a free offer to the community. I hope you have some amusing time in the Hunting Grounds. INSTALLATION STEP 1. At your mission folder, go inside core\items, create a new file and name it fn_huntingKit.sqf. Then paste in it the following code: /* File: fn_huntingKit.sqf Author: Nikos (Ravenheart) Description: Hunting Kit helps to track animals. To be used at the Hunting Area. */ private["_foundAnimal","_foundDistance","_foundDirection"]; closeDialog 0; _check_animals = ["Hen_Random_F","Cock_Random_F","Goat_Random_F","Sheep_Random_F"]; //What animals to look for. _check_distance = 200; //How should the kit look. if (vehicle player != player) exitWith {hint "You cannot examine the ground from within a vehicle!"}; _track = [typeof (nearestObjects [player, _check_animals, _check_distance] select 0), getpos player distance getpos (nearestObjects [player, _check_animals, _check_distance] select 0), player getreldir (nearestObjects [player, _check_animals, _check_distance] select 0)]; _foundAnimal = "void"; if (_track select 0 == "Hen_Random_F") then {_foundAnimal = "Hen";}; if (_track select 0 == "Cock_Random_F") then {_foundAnimal = "Rooster";}; if (_track select 0 == "Goat_Random_F") then {_foundAnimal = "Goat";}; if (_track select 0 == "Sheep_Random_F") then {_foundAnimal = "Sheep";}; if (_track select 0 == "Rabbit_F") then {_foundAnimal = "Rabbit";}; _foundDistance = "Old"; if (_track select 1 <= 100) then {_foundDistance = "Recent";}; if (_track select 1 <= 50) then {_foundDistance = "Very Recent";}; _foundDirection = "Ahead"; if (_track select 2 >= 45 && _track select 2 < 135) then {_foundDirection = "to the Right";}; if (_track select 2 >= 135 && _track select 2 < 225) then {_foundDirection = "Behind";}; if (_track select 2 >= 225 && _track select 2 < 315) then {_foundDirection = "to the Left";}; if (_foundAnimal == "void") then { hint "No traces of animals found"; } else { hint format ["There are %1 traces of a %2 leading %3.",_foundDistance,_foundAnimal,_foundDirection]; }; STEP 2. Open core\pmenu\fn_useItem.sqf, find switch (true) do { and right below that paste the following code, so you have a new "case" statement: case (_item isEqualTo "huntingKit"): { [] spawn life_fnc_huntingKit; }; STEP 3. Open Config_vItems.hpp, find class market { name = "STR_Shops_Market"; side = "civ"; license = ""; level[] = { "", "", -1, "" }; items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "pickaxe", "toolkit", "fuelFull", "peach", "storagesmall", "storagebig", "rabbit_raw", "hen_raw", "rooster_raw", "sheep_raw" }; }; and add the Hunting Kit item in the items[] line so it looks similar to the following (I have added it before the pickaxe: class market { name = "STR_Shops_Market"; side = "civ"; license = ""; level[] = { "", "", -1, "" }; items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "huntingKit", "pickaxe", "toolkit", "fuelFull", "peach", "storagesmall", "storagebig", "rabbit_raw", "hen_raw", "rooster_raw", "sheep_raw" }; }; STEP 4. In the same file, find: class pickaxe { variable = "pickaxe"; displayName = "STR_Item_Pickaxe"; weight = 2; buyPrice = 750; sellPrice = 350; illegal = false; edible = -1; icon = "icons\ico_pickaxe.paa"; }; ..and right after, add this: class huntingKit { variable = "huntingKit"; displayName = "STR_Item_huntingKit"; weight = 2; buyPrice = 800; sellPrice = 300; illegal = false; edible = -1; icon = "icons\ico_huntingKit.paa"; }; STEP 5. In your Mission folder, open Functions.hpp, inside the Class Items block add this as a new line: class huntingKit {}; STEP 6. In your Mission folder, open stringtable.xml, find: <Key ID="STR_Item_Pickaxe"> <Original>Pickaxe</Original> <Czech>Krumpáč</Czech> <Spanish>Pico</Spanish> <Russian></Russian> <German>Spitzhacke</German> <French>Pioche</French> <Italian>Piccone</Italian> <Portuguese>Picareta</Portuguese> <Polish>Kilof</Polish> </Key> ..and right after that add this: <Key ID="STR_Item_huntingKit"> <Original>Hunting Kit</Original> </Key> STEP 7. In your Mission folder, open Config_Master.hpp, find: saved_virtualItems[] = { "pickaxe","fuelEmpty","fuelFull","spikeStrip","lockpick","boltcutter","blastingcharge","defuseKit","storageSmall","storageBig","redgull","coffee","waterBottle","apple","peach","tbacon","donuts","rabbit","salema","ornate","mackerel","tuna","mullet","catshark","turtle_soup","hen","rooster","sheep","goat","defibrillator","toolkit" }; //Array of virtual items that can be saved on your player. ..and add the Hunting Kit so it look similar to this: saved_virtualItems[] = { "pickaxe","huntingKit","fuelEmpty","fuelFull","spikeStrip","lockpick","boltcutter","blastingcharge","defuseKit","storageSmall","storageBig","redgull","coffee","waterBottle","apple","peach","tbacon","donuts","rabbit","salema","ornate","mackerel","tuna","mullet","catshark","turtle_soup","hen","rooster","sheep","goat","defibrillator","toolkit" }; //Array of virtual items that can be saved on your player. STEP 8. Finally, in your Mission folder, open the icons folder and put the ico_huntingKit.paa file: ico_huntingKit.paa
  29. 2 likes
    Hello, I am TreySon Durango one the the founder and project lead at Blackout Studios A3L. We have been working on this server for around 4 months and we have decided to release the server to the public. It is a modded Kelleys Island Server. It is realistic and serious roleplay. We are a non white-listed community for now. We have many feature on this server and I will list a few of them. I will also have screenshots to show off some of the features. FEATURES Tuning Shop Talent System Realistic Sheriff Office Realistic Fire Department and EMS Custom Kelley Island Map Dynamic Market Collectible Evidence Modded Vehicles, Weapons, and Clothing Custom Jobs Dynamic Government Custom Jail Custom Wanted Menu Custom Phone [W.I.P.] INFORMATION Website Teamspeak Mod Pack SCREENSHOTS Sorry for Low Quality PC sucks Phone is a [W.I.P.] Credits: Dylan and TreySon for making the server Kevin Shelby for Running the community Maddox for helping me take the screenshots
  30. 2 likes
    @armagod Yes same , anyone know how to fix this? im currently trying to but having no look
  31. 2 likes
    What exactly are you doing? You're boasting about excellent development skill, yet your website design looks like something my anus has produced after hours of drinking cider and eating curry, and the "features" you mentioned are default Altis Life features developed by Tonic, Yuka & myself - along with every other contributing member of the Altis Life community, and those vehicle textures? They look like the last girl I slept with. It's sad to see that in my time away from the Altis community, there has been absolutely no progress made on reducing the amount of ridiculous threads like this that are essentially promoting copy-paste style servers which pull more players away from the servers containing ACTUAL developers, and not just people who paste one script function and them label themselves as a developer.
  32. 2 likes
    Isn't better if you edit the first post and add the fixes there? I think it will be less confusing and will stop people from reporting the same problems over and over again, since most of them just go strait for the tutorial without reading any comments.
  33. 2 likes
    Hello everyone! Some Know me Some don't. My name is Cody i'm a Web Developer/designer for a small company. I know enough scripting for arma to get by and get errors and things fixed. I am currently working on plugins for wordpress >.> wordpress. But ya if you need anything dealing with websites let me know!
  34. 2 likes
    It is that simple, https://github.com/ravmustang/AltisLife-eXpandedHousing/commit/8840d055cc8d9dc5e74c1ea01b31e18bd1460a67 https://github.com/ravmustang/AltisLife-eXpandedHousing/commit/608286b409d6f0a460bad72e9309e9be71c6a7db
  35. 2 likes
    And i'm almost positive you stole this name from the blackwing which shut down time a go
  36. 2 likes
    Hey guys, I have found a series on YouTube about how to develop altis life. At the moment there is only 5 videos but it can really help some people out that are brand new to developing and want to start learning. Here is the series, Enjoy! https://www.youtube.com/playlist?list=PLeRs9XVbTrpZ_tS2CBUv8hVa6EbH1XE3U
  37. 2 likes
    What are you referring to? Thats the format of my mission file.... "AustraliaLifeRPG_Functions.hpp" class Socket_Reciever { tag = "SOCK"; class ALRPG_MYSQL { file = "source\mysql"; class dataQuery {}; class insertPlayerInfo {}; class requestReceived {}; class syncData {}; class updatePartial {}; class updateRequest {}; }; }; class Life_Client_Core { tag = "life"; class ALRPG_SOURCE { file = "source\game"; class initializeCivilian {}; class initializePolice {}; class initializeMedic {}; class initializeResistance {}; }; class ALRPG_CIVILIAN_FACTION { file = "source\game\civilian"; class civLoadout {}; class civMarkers {}; class demoChargeTimer {}; class demoChargeTimerArtGallery {}; class freezePlayer {}; class jail {}; class jailMe {}; class knockedOut {}; class knockoutAction {}; class removeLicenses {}; class robPerson {}; class robReceive {}; class tazed {}; class gagAction {}; class gagged {}; class removeGagAction {}; class tieing {}; class tieingAction {}; class tieingActionb {}; class tieingb {}; class untie {}; class untieb {}; class civInteractionMenu {}; }; class ALRPG_RESISTANCE_FACTION { file = "source\game\resistance"; class resistanceLoadout {}; class resistanceMarkers {}; }; class ALRPG_POLICE_FACTION { file = "source\game\police"; class bountyReceive {}; class containerInvSearch {}; class copInteractionMenu {}; class copLights {}; class copLoadout {}; class copMarkers {}; class copSearch {}; class copSiren {}; class copSiren2 {}; class copBullhornOne {}; class copBullhornTwo {}; class copBullhornThree {}; class copBullhornFour {}; class copBullhornFive {}; class doorAnimate {}; class fedCamDisplay {}; class licenseCheck {}; class licensesRead {}; class questionDealer {}; class radar {}; class repairDoor {}; class restrain {}; class searchClient {}; class seizeClient {}; class sirenLights {}; class spikeStripEffect {}; class ticketGive {}; class ticketPaid {}; class ticketPay {}; class ticketPrompt {}; class vehInvSearch {}; class wantedGrab {}; class backupCall {}; class callBackup {}; class TPKavalaPoliceHQ {}; class TPAthiraPoliceHQ {}; class TPSofiaPoliceHQ {}; class TPPyrgosPoliceHQ {}; class TPZarosPoliceHQ {}; class TPHighwayPatrol {}; class TPPoliceAirHQ {}; class TPPoliceTrainingFacility {}; class TPEaglePoliceBase {}; class TPMaritimeBase {}; class TPArmedOffendersSquadBase {}; }; class ALRPG_MEDIC_FACTION { file = "source\game\medic"; class medicLights {}; class medicLoadout {}; class medicMarkers {}; class medicRequest {}; class medicSiren {}; class medicSirenLights {}; class requestMedic {}; class revived {}; class revivePlayer {}; class panicButton {}; class panicButtonRecieved {}; }; class ALRPG_PLAYER { file = "source\game\player"; class onPlayerKilled {}; class onPlayerRespawn {}; class respawned {}; }; class ALRPG_ACTIONS { file = "source\game\actions"; class speedBomb {}; class robPetrolStation {}; class robHospital {}; class robCommonwealthBank {}; class craftAction {}; class carC4 {}; class suicideVest {}; class playSound {}; class arrestAction {}; class buyLicense {}; class captureHideout {}; class catchFish {}; class dpFinish {}; class dropFishingNet {}; class escortAction {}; class gather {}; class getDPMission {}; class gutAnimal {}; class healHospital {}; class impoundAction {}; class mine {}; class newsBroadcast {}; class packupSpikes {}; class pickupItem {}; class pickupMoney {}; class postBail {}; class processAction {}; class pulloutAction {}; class putInCar {}; class removeContainer {}; class repairTruck {}; class restrainAction {}; class robAction {}; class searchAction {}; class searchVehAction {}; class seizePlayerAction {}; class serviceChopper {}; class stopEscorting {}; class storeVehicle {}; class surrender {}; class ticketAction {}; class unrestrain {}; class revokeDriverLicense{}; class blastingCharge {}; class boltcutter {}; class defuseKit {}; class flashbang {}; class jerrycanRefuel {}; class jerryRefuel {}; class lockpick {}; class placestorage {}; class spikeStrip {}; class storageBox {}; class codeCracker {}; class dragDeadBody {}; class dropDeadBody {}; class attachDeadBody {}; class detachDeadBody {}; class moveDeadBody {}; class loadDeadBody {}; class unloadDeadBody {}; class hideDeadBody {}; class stripPlayerAction {}; class forceFeed {}; class takeOrgans {}; class huntingKit {}; }; class ALRPG_CONTENT { file = "source\game\content"; class cellphoneBattery {}; class drugEffects {}; class purgeEvent {}; class slotSpin {}; class slotmachine {}; class nlrTimer {}; class radArea {}; class skyDive {}; class cprKit {}; class busTransportation {}; class teargas {}; }; class ALRPG_TASKS { file = "source\game\tasks"; class setupActions {}; class setupEVH {}; class survival {}; class atmBlocker {}; class robShops {}; class robPetrolStations {}; class robShopReset {}; }; class ALRPG_INTERFACESFUNCTIONS { file = "source\game\interfaces\interfaceFunctions"; class introductionCamera {}; class introductionWords {}; class bankDeposit {}; class bankDepositAll {}; class bankTransfer {}; class bankWithdraw {}; class displayHandler {}; class gangDeposit {}; class gangWithdraw {}; class garageLBChange {}; class impoundMenu {}; class progressBar {}; class safeFix {}; class safeInventory {}; class safeOpen {}; class safeTake {}; class sellGarage {}; class setMapPosition {}; class spawnConfirm {}; class spawnMenu {}; class spawnPointCfg {}; class spawnPointSelected {}; class unimpound {}; class vehicleGarage {}; class wireTransfer {}; class statusBar {}; class loggedOut {}; class deathScreen {}; class cellphone {}; class giveItem {}; class giveMoney {}; class keyDrop {}; class keyGive {}; class keyMenu {}; class p_openMenu {}; class p_updateMenu {}; class pardon {}; class removeItem {}; class s_onChar {}; class s_onCheckedChange {}; class s_onSliderChange {}; class settingsMenu {}; class updateViewDistance {}; class useItem {}; class wantedAddP {}; class wantedInfo {}; class wantedList {}; class wantedMenu {}; class craft {}; class craft_update {}; class craft_updateFilter {}; class animMenu {}; class safeInventoryArtGallery {}; class safeOpenArtGallery {}; class safeTakeArtGallery {}; class escIconHotlinks {}; class keyPage {}; }; class ALRPG_ADMINPANEL { file = "source\game\interfaces\interfaceFunctions\adminPanel"; class adminCompensate {}; class adminDebugCon {}; class adminFreeze {}; class admingetID {}; class adminGodMode {}; class adminid {}; class admininfo {}; class adminMarkers {}; class adminMenu {}; class adminQuery {}; class adminSpectate {}; class adminTeleport {}; class adminTpHere {}; }; class ALRPG_GANGSYSTEM { file = "source\game\content\gangs"; class initGang {}; class createGang {}; class gangCreated {}; class gangDisband {}; class gangDisbanded {}; class gangInvite {}; class gangInvitePlayer {}; class gangKick {}; class gangLeave {}; class gangMenu {}; class gangNewLeader {}; class gangUpgrade {}; }; class ALRPG_HOUSINGSYSTEM { file = "source\game\content\housing"; class houseConfig {}; class buyHouse {}; class buyHouseGarage {}; class containerMenu {}; class copBreakDoor {}; class copHouseOwner {}; class garageRefund {}; class getBuildingPositions {}; class houseMenu {}; class initHouses {}; class lightHouse {}; class lightHouseAction {}; class lockHouse {}; class lockupHouse {}; class placeContainer {}; class PlayerInBuilding {}; class raidHouse {}; class sellHouse {}; class sellHouseGarage {}; }; class ALRPG_VEHICLE { file = "source\game\vehicle"; class addVehicle2Chain {}; class colorVehicle {}; class FuelRefuelcar {}; class fuelStore {}; class fuelSupply {}; class lockVehicle {}; class openInventory {}; class vehiclecolor3DRefresh {}; class vehicleOwners {}; class vehicleWeight {}; class vehInventory {}; class vehStoreItem {}; class vehTakeItem {}; class vInteractionMenu {}; class deviceMine {}; }; class ALRPG_DYNAMICMARKET { file = "source\game\content\maverick\dynamic-market"; class bought {}; class update {}; class DisplayPrices {}; class LoadIntoListbox {}; class ForcePrice {}; class DYNMARKET_getPrice {}; }; class ALRPG_AUCTIONHOUSE { file = "source\game\content\vAH"; class vAH_load; class vAH_buy; class vAH_reciever; class vAH_loadInventory; class vAH_sell; class vAH_checkItem; class vAH_takeBack; class vAH_select; }; class ALRPG_SHOPS { file = "source\game\shops"; class atmMenu {}; class buyClothes {}; class changeClothes {}; class chopShopMenu {}; class chopShopSelection {}; class chopShopSell {}; class clothingFilter {}; class clothingMenu {}; class fuelLBchange {}; class fuelStatOpen {}; class levelCheck {}; class vehicleShop3DPreview {}; class vehicleShopBuy {}; class vehicleShopEnd3DPreview {}; class vehicleShopInit3DPreview {}; class vehicleShopLBChange {}; class vehicleShopMenu {}; class virt_buy {}; class virt_menu {}; class virt_sell {}; class virt_update {}; class weaponShopAccs {}; class weaponShopBuySell {}; class weaponShopFilter {}; class weaponShopMags {}; class weaponShopMenu {}; class weaponShopSelection {}; }; class ALRPG_CONFIGS { file = "source\game\config"; class itemWeight {}; class vehicleAnimate {}; class vehicleWeightCfg {}; class craftCfg {}; }; class ALRPG_FUNCTIONS { file = "source\game\functions"; class AAN {}; class AAN_ArtGallery {}; class AAN_ReserveBank {}; class accType {}; class actionKeyHandler {}; class animSync {}; class calWeightDiff {}; class clearVehicleAmmo {}; class dropItems {}; class escInterupt {}; class fetchCfgDetails {}; class fetchDeadGear {}; class fetchVehInfo {}; class isDamaged {}; class giveDiff {}; class handleDamage {}; class handleInv {}; class handleItem {}; class hideObj {}; class hudSetup {}; class hudUpdate {}; class inventoryClosed {}; class inventoryOpened {}; class isUIDActive {}; class keyHandler {}; class loadDeadGear {}; class loadGear {}; class nearATM {}; class nearestDoor {}; class nearUnits {}; class numberText {}; class onFired {}; class onTakeItem {}; class playerSkins {}; class playerTags {}; class postNewsBroadcast {}; class pullOutVeh {}; class pushObject {}; class receiveItem {}; class receiveMoney {}; class revealObjects {}; class saveGear {}; class searchPosEmpty {}; class simDisable {}; class stripDownPlayer {}; class tazeSound {}; class teleport {}; class whereAmI {}; class seatbelt {}; class broadcast {}; class corpse {}; class jumpFnc {}; class say3D {}; class setFuel {}; class soundDevice {}; class sitDown {}; class standUp {}; class cprRevived {}; class stripPlayerActionClient {}; class forceFed {}; class hasOrgan {}; }; };
  38. 2 likes
    Heres How To Add Smoke Trails To Cessna Difficulty : Easy thanks to @Emma in FN_setupactions.sqf in class civillian add new line and add life_smokeTrail = false; life_smokes = []; life_actions = []; life_actions pushBack (player addAction["Smoke Trail", { life_smokeTrail = true; { private _colour = ["SmokeShellRed", "SmokeShellBlue"] select _forEachIndex; for "_i" from 0 to 5 do { private _veh = objectParent player; private _smoke = _colour createVehicle [random(50),random(50),random(50)]; _smoke attachTo [_veh, _x]; life_smokes pushBack _smoke; }; } forEach [[-5,0.855469,-0.6],[5,0.855469,-0.6]]; },"",0,false,false,"",'!life_smokeTrail && {!isNull objectParent player} && {objectParent player isKindOf "Plane"}']); life_actions pushBack (player addAction["Stop Smoke Trail", { life_smokeTrail = false; { deleteVehicle _x; } forEach life_smokes; },"",0,false,false,"",'life_smokeTrail']); https://gyazo.com/fb79d08065db6baf29cf873eec63a781 Screenshot
  39. 2 likes
    @Deadlesszombie Your config_gather file is a bit strange. You have inside class Resources iron, sand, diammong and salt... I think them must be only on class Minerals. Sand have the same class name for both, it looks like something is conflict. And I noticed that in your Config_Gather.hpp the class name is peaches and mine (v 5.0) is peach. I'm thinking why its different =P Are you using dev framework 5.0? Or another version? Anyway, make a backup of your Config_Gather.hpp and try this: I changed peaches to peach, but i reccoment you check this out. Now you have to edit the file: Config_Process.hpp The default name from iron processed is just iron, but if you want the name be iron_refined, you have to change it, find class iron { and change it to: class iron_refined { You will have to change the name on the traders lists too, so I DON'T RECOMMEND YOU CHANGE THE NAME... Anyway, you have to add the class steel too, so, just add it at Config_Process.hpp like as: class ProcessAction { ... class steel { MaterialsReq[] = {{"iron",3}}; MaterialsGive[] = {{"steel",1}}; Text = "STR_Process_Steel"; //ScrollText = "Process Steel"; NoLicenseCost = 75000; //optional price }; }; And you have to add the steel in stringtable.xml too. Find: <Key ID="STR_Process_Iron"> and place below </Key>: <Key ID="STR_Process_Steel"> <Original>Casting Steel Ingots</Original> <Czech>Casting Steel Ingots</Czech> <Spanish>Casting Steel Ingots</Spanish> <Russian></Russian> <French>Casting Steel Ingots</French> <German>Casting Steel Ingots</German> <Italian>Casting Steel Ingots</Italian> <Portuguese>Processando Aço</Portuguese> <Polish>Casting Steel Ingots</Polish> </Key> Find: <Key ID="STR_License_Iron"> and place below </Key>: <Key ID="STR_License_Steel"> <Original>Steel Processing</Original> <Czech>Steel Processing</Czech> <Spanish>Steel Processing</Spanish> <Russian></Russian> <German>Steel Processing</German> <French>Steel Processing</French> <Italian>Steel Processing</Italian> <Portuguese>Processamento de Aço</Portuguese> <Polish>Steel Processing</Polish> </Key> Open Config_Licenses.hpp and add above the last }; : class steel { variable = "steel"; displayName = "STR_License_Steel"; price = 9500; illegal = false; side = "civ"; }; Now you have to open your mission SQM, copy the npc that process iron, paste the copy where you want the npc to process steel and change the INIT to steel, like as: this enableSimulation false; this allowDamage false; this addAction[localize"STR_Process_Steel",life_fnc_processAction,"steel",0,false,false,"",' life_inv_iron > 2 && !life_is_processing && !life_action_inUse']; this addAction[format ["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "steel" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "steel" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"steel",0,false,false,"",' !license_civ_steel && playerSide isEqualTo civilian ']; Well, i think thats all. If you still have errors, you can do all again, following those tutorials: My tutorial (How to add ECSTASY): or @StonerGaming : Good luck!
  40. 2 likes
    _type = [_this,3,"",[""]] call BIS_fnc_param; this addAction[localize""STR_Process_Copper"",life_fnc_processAction,""copper"" "copper" The first three params to the file are passed by the engine (info such as caller, object the action is bound to, etc). The second parameter in addAction is your _type. I'll add support for this on the dev build, passed my mind tbh. I'll just be adding another config entry to CfgProcess, and querying it from process (with the same _type, i.e, copper). So if you want to PR, If you want a quick fix, pass an array of licenses (or just a single element array) instead of the type, accept is as an array (in param), then iterate through it and check. If you pass licenses in the manner ["license_civ_copper","license_civ_blah"] You can directly check like so: if (missionNamespace getVariable [_x, false]) then {} While looping over your input. Goodluck!
  41. 2 likes
    Thanks so much it is working like a charm! I only have a small server 30 - 40 people but not one person has said its bad. Fantastic Job buddy +Rep Btw do you mind if I use this in one of my youtube videos. Like a tutorial on how to install it. Regards, Oscar <3
  42. 2 likes
    You didn't download the framework from there
  43. 2 likes
    Already made. Unless you want a different way?
  44. 2 likes
    No worries mate.
  45. 2 likes
    Right underneath if (LIFE_SETTINGS(getNumber,"pump_service") isEqualTo 1) then { [] execVM "core\fn_setupStationService.sqf"; }; add { _x params [["_chan",-1,[0]], ["_noText","false",[""]], ["_noVoice","false",[""]]]; _noText = [false,true] select ((["false","true"] find toLower _noText) max 0); _noVoice = [false,true] select ((["false","true"] find toLower _noVoice) max 0); _chan enableChannel [!_noText, !_noVoice]; } forEach getArray (missionConfigFile >> "disableChannels");
  46. 2 likes
    Rules of the forums: Be respectful to other members Must speak English, posts in a different language will be deleted and topics will be closed. (Besides the designated sections) Do not spam the forums for help Do not message admins for help related to Altis-Life & Tanoa Life or anything from Arma 3. Only contact us about website issues. No sexual / pornographic images. No selling scripts, snippets, or services. Do not impersonate staff. *** Do not use the chat box to ask for help, search for an existing topic or create one. Do not post link to external website. *** *** Do not spam, other website or personal social media activity, except for give source or credit, DONT TRY TO BYPASS THAT RULE WITH FAKE HELPING REASON. *** STOP! Before posting please use the search bar!
  47. 2 likes
    I've uploaded a high quality siren to replace the current version that is included in the Altis Life files, you can edit the siren to your needs there's only a few versions of the different siren modes but you can always chop edit etc. I've also added the mp3 of all the sirens together, just remember to change the timing to match your edit (for the newbies) in your respective files otherwise it will over lap and sound really crappy. Anyway enjoy. Link: https://www.dropbox.com/s/33ub0h7ssal3oth/Rumbler.zip?dl=0
  48. 1 like
    Same as the other yes, and changing the DB name will just lead to it being changed in the extDB config, thats all.
  49. 1 like
    For support on an external website or scripts from a paid external website please refer to their support page.
  50. 1 like
    Würde mich gerne dafür melden... Scripte jetzt seit etwa 6 Jahren .... meist allerdings eigene Server. Würde mich über eine Rückmeldung sehr freun. MFG LowTV