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 09/12/2016 in all areas

  1. 23 points
    Working Scripts Archive easy access to all available scripts _____________________________________________________________________________________________________________________________________________ UI and Informational Professional looking HUD 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 Simply Morphine and Bandages Dynamic market 5.0 Custom Spawn Loadouts for Civilians Seat Belts Patdown Player + Seize Objects Realistic Towing Ear Plugs Rubber Bullets Realistic CPR Kit Actions Menu Tag System Speed Bomb Zip Ties Police Backup Jaws of Life Realistic Tazer Hand Gestures Buyable Loadouts Backpack Custom Capacity Marijuana Effects Gag Action Fastrope Auto Save Adding Smoke Effect to Processing Placeable Objects for Police Invisible Backpacks for police/med Anti VDM Block Changing Names Cops can enter locked vehicles Warner's Barriers Configurable Jail Time Adding police radar GPS System Car Alarm Boat Rental Civilian Passports Police Gate Opening Hotkey Adding Smoke Trails to Cesna Suicide Vest Automatic Messages Animal Tracking (for Hunting) Wedding rings Systems and Complex Features Questing System 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 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 Custom Medic & Cop Skins Adding Licenses 4.4 Tobacco-field 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
  2. 17 points
    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): 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!
  3. 12 points
    ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════ 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. 11 points
    Warner's Barriers - Version 3 Updated October 4th 2016 This may work on version 3.x, I can only confirm it works with 4.x. If you get it working with 3.x reply to this post and I will try to get it moved to universal. Thanks :] Features Place 6 unique objects used to control traffic or pedestrians. Seen in real time where your barrier will be placed. Cones and barriers with working caution lights. Remove barriers with ease. Ability to white list for police and medic ranks. Simple Install Install for Scroll Wheel Download the script from the link below. Drag the script into the "Altis_Life.Altis\core\actions" folder. Ensure the script is named fn_barrier and the file extension is .sqf Open Functions.hpp in the Altis_Life.Altis folder. Find the class Actions section and add class barrier {}; to the end of the list. IMAGE Open initPlayerLocal.sqf in the Altis_Life.Altis folder. At the very bottom add BarrierOpen = 0;. Open fn_setupActions.sqf in the Altis_Life.Altis\core folder. Add a new case for west and add the following code. player addaction ["Barriers",life_fnc_barrier,[""],0,false,true,"","vehicle player == player and BarrierOpen == 0"]; IMAGE (Optional) If you want medics to have access to the menu add a case for Independent too. (OPTIONAL) Space Bar to Drop Barrier Open fn_keyHandler.sqf in the "Altis_Life.Altis\core\functions" folder. Inside case 57 add the following code. detach placeable; placeable setVectorUP (surfaceNormal [(getPosATL placeable) select 0,(getPosATL placeable) select 1]); IMAGE Save your fn_keyHandler.sqf before you add the above code, ArmA has been known to have stuff break for no reason. Video Demonstration CLICK ME Download Download - Version 3
  5. 10 points
    How to Stop the Gang Bank Duplication Exploit Author: CptGooch Author Website: www.abeloth.com Short description: I got tired of seeing so many servers and even the framework with this exploit. Downloads: fn_gangDeposit.sqf & fn_gangWithdraw.sqf Installation Steps: Replace your fn_gangWithdraw.sqf and fn_gangDeposit.sqf found in dialog\function\ with the downloads provided Add the following to your core/configuration.sqf life_gang_bank_time = 0; Open your stringtable.xml and search (crtl+f) for STR_ATM_DepositInUseG Update the original text to <Original>Reconnecting to bank server. Please wait 10 seconds to deposit into your gang's bank account.</Original> Now find STR_ATM_WithdrawInUseG and update the original text to <Original>Reconnecting to bank server. Please wait 10 seconds to withdraw from your gang's bank account.</Original> Next, open up \dialog\bank.hpp Change your GangWithdraw button action to onButtonClick = "[] spawn {sleep (random 0.5);[] call life_fnc_gangWithdraw};"; And change your GangDeposit action to onButtonClick = "[] spawn {sleep (random 0.5);[] call life_fnc_gangDeposit};"; All done! No more Gang Bank Duping for those #%!#*^.
  6. 10 points
    ============================================================================================================ 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
  7. 10 points
    LINKS AND TOOLS EVERY DEVELOPER SHOULD HAVE Created by Repentz I will edit/improve on this when I think of more, this is just a basic list of things. Obfuscation Personal favorite, extremely well made and uses new techniques to stop people from stealing or using your mission: https://armaservices.maverick-apps.de/Products/Obfuscator/ Another tool would be Mikeros tools, but I've never used them nor can I vouch for their security at this time, but it has been around for much longer. https://forums.bistudio.com/topic/113852-mikeros-dos-tools/ Auto Restarts, Rcon, Administration Once again, personal preference is a tool made by maverick applications which gives you many options: https://armaservices.maverick-apps.de/Products/ArmARemoteAdmin/ SQF Editing Tools Atom.io (install SQF package by acemod if you plan on using it) New favorite, visual studio code, ofcourse install SQF packages: https://code.visualstudio.com/ SQL Editing Tools HeidiSQL - free and works for beginner level SQL management NaviCat - Free 14 day trial, although I prefer this program, it is not free forever. Battleye Filters Battleye Filter Creator - Enter your errors one at a time and it outputs filters Classnames Links Basic Clothing, Vests, Helmets Classnames Weapon Classnames /w Ammunition Weapon Ammunition and bullet Classnames Vehicle weapons and specific ammunition Classnames Attachments for weapons, equiptment like NVG's Etc Building Classnames ------- Side Specific Classnames ------- West Classnames East Classnames Independent Classnames Civilian Classnames Misc Keyboard UI Numbers Steam ID to GUID Huge list of png icons that you can resize for Teamspeak icons (16x16)
  8. 8 points
    Welcome Today I will be providing the community with a project I have been working on for a while The Altis Life Bounty Hunters Please not that I have been coding this at times when I have been extremely tired so if any problems occur just message me or tag me in your comment I tried to make this as easy as possible for those who do not want to learn how the code is written. I would like to thank TONIC for providing me with the wantedSystem framework to go off. Fresqo who provided the fn_markers.sqf script BoGuu and Alaskavet for being there when I needed some assistance. Difficulty: EASY PEASY Version: Altis Life 4.4 R3 Let's Get Started!!! 1: Download the zip attached, All files I will be using are inside that zip. 2: missionname >> stringtable.xml find somewhere to put a new package, add: <Package name="Bounty"> <Key ID="STR_Bounty_5000"> <Original>$5,000</Original> </Key> <Key ID="STR_Bounty_10000"> <Original>$10,000</Original> </Key> <Key ID="STR_Bounty_15000"> <Original>$15,000</Original> </Key> <Key ID="STR_Bounty_20000"> <Original>$20,000</Original> </Key> <Key ID="STR_Bounty_25000"> <Original>$25,000</Original> </Key> <Key ID="STR_Bounty_30000"> <Original>$30,000</Original> </Key> <Key ID="STR_Bounty_35000"> <Original>$35,000</Original> </Key> <Key ID="STR_Bounty_40000"> <Original>$40,000</Original> </Key> <Key ID="STR_Bounty_45000"> <Original>$45,000</Original> </Key> <Key ID="STR_Bounty_50000"> <Original>$50,000</Original> </Key> <Key ID="STR_Bounty_55000"> <Original>$55,000</Original> </Key> <Key ID="STR_Bounty_60000"> <Original>$60,000</Original> </Key> <Key ID="STR_Bounty_65000"> <Original>$65,000</Original> </Key> <Key ID="STR_Bounty_70000"> <Original>$70,000</Original> </Key> <Key ID="STR_Bounty_75000"> <Original>$75,000</Original> </Key> <Key ID="STR_Bounty_80000"> <Original>$80,000</Original> </Key> <Key ID="STR_Bounty_85000"> <Original>$85,000</Original> </Key> <Key ID="STR_Bounty_90000"> <Original>$90,000</Original> </Key> <Key ID="STR_Bounty_95000"> <Original>$95,000</Original> </Key> <Key ID="STR_Bounty_100000"> <Original>$100,000</Original> </Key> <Key ID="STR_Bounty_200000"> <Original>$200,000</Original> </Key> <Key ID="STR_Bounty_300000"> <Original>$300,000</Original> </Key> <Key ID="STR_Bounty_400000"> <Original>$400,000</Original> </Key> <Key ID="STR_Bounty_500000"> <Original>$500,000</Original> </Key> <Key ID="STR_Bounty_1000000"> <Original>$1,000,000</Original> </Key> <Key ID="STR_Bounty_AddP"> <Original>%1 has been added to the bounty list, he was added for $%2 this has risen he current bounty price to $%3. The last known location has been marked on the map for all bounty hunting units. Normal declaration rules still apply, RDM will be delt with.</Original> </Key> <Key ID="STR_MAR_bountyW"> <Original>Bounty Hunters Armory</Original> </Key> <Key ID="STR_MAR_bounty"> <Original>Bounty Hunters HQ</Original> </Key> <Key ID="STR_GNOTF_BountyMSG"> <Original>You are about to buy a 'Bounty Hunting License' buying this license will give you access to the Bounty Hunters Database, kill someone on the list to get thier bounty! Normal declaration still applys, you can NOT RDM! Do you accept these terms and conditions?</Original> </Key> <Key ID="STR_bounty_bountyList_notBH"> <Original>You are not a civilian, only civilians can add people to the bounty list! I suggest you leave!</Original> </Key> <Key ID="STR_bounty_bountyList_noPlayerSelected"> <Original>No player on the list was selected! Please select a player.</Original> </Key> <Key ID="STR_bounty_bountyList_noAmountSelected"> <Original>No amount was selected, use the drop down menu to select a bounty amount.</Original> </Key> <Key ID="STR_Bounty_BountyKill"> <Original>You have collected a bounty of $%1 for killing someone on the bounty list, nice job!</Original> </Key> <Key ID="STR_Bounty_Title"> <Original>Bounty List</Original> </Key> <Key ID="STR_BountyA_Title"> <Original>Bounty Hunting Database</Original> </Key> <Key ID="STR_Bounty_License"> <Original>Bounty License</Original> </Key> <Key ID="STR_License_bountyH"> <Original>Bounty Hunter</Original> </Key> </Package> 3. missionname >> functions.hpp Add: class BountyHunters { file = "core\BountyHunters"; class bountyAddMenu {}; class bountyAddP {}; class bountyBuy {}; class bountyGrab {}; class bountyHunterReceive {}; class bountyInfo {}; class bountyKill {}; class bountyList {}; class bountyMenu {}; class markers {}; }; 4. missionname >> CfgRemoteExec.hpp Add: In the Right Areas F(life_fnc_bountyHunterReceive,CLIENT)//Bountyhunter F(life_fnc_bountyList,CLIENT)//Bountyhunter F(life_fnc_markers,CLIENT)//Bountyhunter F(life_fnc_bountyReceive,CLIENT)//Bountyhunter F(life_fnc_bountyAdd,SERVER)//Bountyhunter F(life_fnc_amountBounty,SERVER)//Bountyhunter F(life_fnc_bountyFetch,SERVER)//Bountyhunter F(life_fnc_bountyPerson,SERVER)//Bountyhunter F(life_fnc_bountyProfUpdate,SERVER)//Bountyhunter F(life_fnc_bountyRemove,SERVER)//Bountyhunter F(life_fnc_bountyAlter,SERVER)//Bountyhunter F(life_fnc_bountyCrimes,SERVER)//Bountyhunter F(life_fnc_bountyAmountGather,SERVER)//Bountyhunter 5. missionname >> config >> config_license Add: class bountyH { variable = "bountyH"; displayName = "STR_License_bountyH"; price = 100000; illegal = false; side = "civ"; }; 6. missionname >> config >> Master_config Add under the crimes array: /* Bounty System Settings * /* bountys[] = {string, amount, code} */ bountys[] = { {"STR_Bounty_5000", "5000", "1B"}, {"STR_Bounty_10000", "10000", "2B"}, {"STR_Bounty_15000", "15000", "3B"}, {"STR_Bounty_20000", "20000", "4B"}, {"STR_Bounty_25000", "25000", "5B"}, {"STR_Bounty_30000", "30000", "6B"}, {"STR_Bounty_35000", "35000", "7B"}, {"STR_Bounty_40000", "40000", "8B"}, {"STR_Bounty_45000", "45000", "9B"}, {"STR_Bounty_50000", "50000", "10B"}, {"STR_Bounty_55000", "55000", "11B"}, {"STR_Bounty_60000", "60000", "12B"}, {"STR_Bounty_65000", "65000", "13B"}, {"STR_Bounty_70000", "70000", "14B"}, {"STR_Bounty_75000", "75000", "15B"}, {"STR_Bounty_80000", "80000", "16B"}, {"STR_Bounty_85000", "85000", "17B"}, {"STR_Bounty_90000", "90000", "18B"}, {"STR_Bounty_95000", "95000", "19B"}, {"STR_Bounty_100000", "100000", "20B"}, {"STR_Bounty_200000", "200000", "21B"}, {"STR_Bounty_300000", "300000", "22B"}, {"STR_Bounty_400000", "400000", "23B"}, {"STR_Bounty_500000", "500000", "24B"}, {"STR_Bounty_1000000", "1000000", "25B"} }; 7. missionname >> core >> medical >> fn_onPlayerKilled.sqf Underneath the last player set variable add: private _BountyPeeps = []; { if (license_civ_bountyH) then {_BountyPeeps pushBack _x}; } forEach playableUnits; Then under: //Killed by cop stuff... if (side _killer isEqualTo west && playerSide != west) then { life_copRecieve = _killer; //Did I rob the federal reserve? if (!life_use_atm && {CASH > 0}) then { [format [localize "STR_Cop_RobberDead",[CASH] call life_fnc_numberText]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; CASH = 0; }; }; Add: if (side _killer isEqualTo civilian && {_killer != _unit}) then { if (_killer in _BountyPeeps) then { life_bountyHunter = _killer; }; }; if (!isNull _killer) then { life_removeBounty = true; }; 8. Grab the files in the zip file and place them in the respected folders. 9. missionname >> dialog >> masterhandler Add: #include "bounty_list.hpp" #include "bounty_addList.hpp" 10. missionname >> core >> configuration Add under Backend variables life_removeBounty = false; 11. missionname >> core >> pmenu >> fn_p_openMenu Add under case west: ctrlShow[9696,false]; ctrlShow[9898,false] Add under case Civ: ctrlShow[9696,true]; ctrlShow[9898,true] Add under case med: ctrlShow[9696,false]; ctrlShow[9898,false] NOTE: The numbers are what you guys id you bountyList button as, I have two because I have the button and an icon, you may only have 1!!! 12. missionname >> core >> medical >> fn_respawned.sqf Under: //Johnny law got me but didn't let the EMS revive me, reward them half the bounty. if (!isNil "life_copRecieve") then { if (life_HC_isActive) then { [getPlayerUID player,player,life_copRecieve,true] remoteExecCall ["HC_fnc_wantedBounty",HC_Life]; } else { [getPlayerUID player,player,life_copRecieve,true] remoteExecCall ["life_fnc_wantedBounty",RSERV]; }; life_copRecieve = nil; }; Add: if (!isNil "life_bountyHunter") then { if (life_HC_isActive) then { [getPlayerUID player,player,life_bountyHunter] remoteExecCall ["HC_fnc_amountBounty",HC_Life]; } else { [getPlayerUID player,player,life_bountyHunter] remoteExecCall ["life_fnc_amountBounty",RSERV]; }; life_bountyHunter = nil; }; //Remove Bounty... if (life_removeBounty) then { if (life_HC_isActive) then { [getPlayerUID player] remoteExecCall ["HC_fnc_bountyRemove",HC_Life]; } else { [getPlayerUID player] remoteExecCall ["life_fnc_bountyRemove",RSERV]; }; }; 13. missionname >> core >> civilian >> fn_removeLicense Add this case: //Adds the bountyH license to civs case 100: { missionNamespace setVariable [LICENSE_VARNAME("bountyH","civ"),true]; }; 14. missionname >> core >> init.sqf Under if (life_HC_isActive) then { [getPlayerUID player,player getVariable ["realname",name player]] remoteExec ["HC_fnc_wantedProfUpdate",HC_Life]; } else { [getPlayerUID player,player getVariable ["realname",name player]] remoteExec ["life_fnc_wantedProfUpdate",RSERV]; }; Add: if (life_HC_isActive) then { [getPlayerUID player,player getVariable ["realname",name player]] remoteExec ["HC_fnc_bountyProfUpdate",HC_Life]; } else { [getPlayerUID player,player getVariable ["realname",name player]] remoteExec ["life_fnc_bountyProfUpdate",RSERV]; }; life_server edits: 1. life_server >> config.cpp Add under life tag above class Jail_Sys: //Bounty Hunter class Bounty_Sys { file = "\life_server\Functions\BountySystem"; class amountBounty {}; class bountyRemove {}; class bountyAdd {}; class bountyFetch {}; class bountyProfUpdate {}; class bountyCrimes {}; class bountyAmountGather {}; }; 2. Place the bountyFiles life_server side into the folders. 3. life_server >> init.sqf Under: life_wanted_list = []; Add: life_bounty_list = []; mission.sqf edits: 1. Create the NPC: Inside the NPC you created add this: this enableSimulation false; this allowDamage false; this addAction ["Bounty Hunting ($100,000)", life_fnc_bountyBuy,"",0,false,false,"",' !license_civ_bountyH && playerSide isEqualTo civilian']; this addAction["<t color = '#D660D6'>Bounty Add</t>",life_fnc_bountyAddMenu,"",0,false,false,"",'']; this addAction["<t color = '#E6F402'>Bounty List</t>",life_fnc_bountyMenu,"",0,false,false,"",'']; NOTE: This is the code taken from my mission.sqm file, if you paste that into the editor it WILL NOT work, you have to remove the extra " in the line, there should only be two " " not four. DATABASE EDIT: 1. Make a new query and run this code: USE `altislife`; CREATE TABLE `bounty` ( `bountyID` varchar(64) NOT NULL, `bountyName` varchar(32) NOT NULL, `bounty` int(100) NOT NULL, `insert_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`bountyID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; Then Place folders in the right spot and your good to go. Now we SHOULD be finished... Any problems tag me in your comment and I'll reply to them ASAP I don't think i forgot anything. BountyHunter.rar
  9. 8 points
    Hello everyone, Thought it may be time to write a proper tutorial for my zipties. Location of changes: Mission.Map (Eg. AltisLife.Altis or TanoaLife.Tanoa) Difficulty: Medium Github: https://github.com/Wackbatt/Altis-Life-Zipties 1. Download the files from the github listed above. 2. Navigate to the core folder and drag the zipties folder into it. 3. Go back to your mission root and open functions.hpp and add the following to the very bottom: class zipties { tag = "zipties"; class Functions { file = "core\zipties"; class zip_blindfold {}; class zip_blindfoldAction {}; class zip_gagPlayer {}; class zip_gagAction {}; class zip_interaction {}; class zip_patDown {}; class zip_patDownAction {}; class zip_tie {}; class zip_tieAction {}; class zip_untie {}; class zip_untieFix {}; }; }; 4. Open cfgRemoteExec.hpp and add the following under the client section: F(zipties_fnc_zip_tie,CLIENT) F(zipties_fnc_zip_gagplayer,CLIENT) F(zipties_fnc_zip_blindfold,CLIENT) F(zipties_fnc_zip_patdown,CLIENT) F(zipties_fnc_zip_untieFix,CLIENT) 5. Open stringtable.xml and add the following package at the bottom <Package name="zipties"> <Key ID="STR_NOTF_ziptied"> <Original>%1 was ziptied by someone.</Original> <German>%1 wurde gefesselt.</German> </Key> <Key ID="STR_NOTF_unzipteed"> <Original>%1 was cut loose.</Original> <German>%1 wurde befreit.</German> </Key> <Key ID="STR_ExcessiveTied"> <Original>You have been released automatically for excessive restrainment time</Original> <German>Du wurdest automatisch frei gelassen.</German> </Key> <Key ID="STR_tied"> <Original>You have been restrained by someone.</Original> <German>Du wurdest gefesselt.</German> </Key> <Key ID="STR_Ziptie"> <Original>Ziptie</Original> <German>Fesseln</German> </Key> <Key ID="STR_gag"> <Original>Gag</Original> <German>Knebel</German> </Key> <Key ID="STR_blindfold"> <Original>Blindfold</Original> <German>Augenbinde</German> </Key> </Package> 6. Open description.ext and add the following: class ziptie { name = "ziptie"; sound[] = {"\sounds\ziptie.ogg", 1.0, 1}; titles[] = {}; }; class gag { name = "gag"; sound[] = {"\sounds\gag.ogg", 1.0, 1}; titles[] = {}; }; 6. Add the sounds and icons from the github to the appropriate folders. 7. Go to the config folder and open Config_master.hpp and add the following in the life settings section: ziptie_need_rebel = false; 8. Open Config_vItems.hpp and add the following: class ziptie { variable = "ziptie"; displayName = "STR_Ziptie"; weight = 6; buyPrice = 5000; sellPrice = 1200; illegal = true; edible = -1; icon = "icons\ziptie.paa"; }; class gag { variable = "gag"; displayName = "STR_gag"; weight = 7; buyPrice = 3000; sellPrice = 1000; illegal = true; edible = -1; icon = "icons\gag.paa"; }; class blindfold { variable = "blindfold"; displayName = "STR_blindfold"; weight = 7; buyPrice = 3500; sellPrice = 1200; illegal = true; edible = -1; icon = "icons\blindfold.paa"; }; 9. Open core\actions and replace the 3 files with the files from the git repo. 10. Goto core\functions and open actionkeyhandler and find if (playerSide isEqualTo west && {player getVariable ["isEscorting",false]}) exitWith { [] call life_fnc_copInteractionMenu; }; and add the following underneath: if (playerSide isEqualTo civilian && {player getVariable ["isEscorting",false]}) exitWith { [] call zipties_fnc_zip_interaction; }; and in the same file find if ((_curObject getVariable ["restrained",false]) && !dialog && playerSide isEqualTo west) then { [_curObject] call life_fnc_copInteractionMenu; }; and add the following underneath: if ((_curObject getVariable ["ziptied",true]) && !dialog) then { [_curObject] call zipties_fnc_zip_interaction; }; 11. Open keyhandler in the same folder and replace line 24 to 26 with the following: if ((_code in (actionKeys "GetOver") || _code in (actionKeys "salute") || _code in (actionKeys "SitDown") || _code in (actionKeys "Throw") || _code in (actionKeys "GetIn") || _code in (actionKeys "GetOut") || _code in (actionKeys "Fire") || _code in (actionKeys "ReloadMagazine") || _code in [16,18]) && ((player getVariable ["restrained",false]) || (player getVariable ["playerSurrender",false]) || (player getVariable ["ziptied",false]) || life_isknocked || life_istazed)) exitWith { true; }; 12. Add the following to the if statement for case 21: !(player getVariable ["ziptied",false]) and replace case 19 with the following: case 19: { if (_shift) then {_handled = true;}; if (_shift && playerSide isEqualTo west && {!isNull cursorObject} && {cursorObject isKindOf "Man"} && {(isPlayer cursorObject)} && {(side cursorObject in [civilian,independent])} && {alive cursorObject} && {cursorObject distance player < 3.5} && {!(cursorObject getVariable "Escorting")} && {!(cursorObject getVariable "restrained")} && {speed cursorObject < 1}) then { [] call life_fnc_restrainAction; } else { [] call zipties_fnc_zip_tieAction; }; }; 13. Replace the entirety of fn_pullOutVeh.sqf with the file from the github. 14. Open core\medical and open onplayerkilled and add the following underneath the set variables: [_unit] call ziptie_fnc_zip_untieFix; 15. Open core\vehicle and open vinteractionmenu and find if (playerSide isEqualTo west) then { and add the following above it: _Btn4 ctrlSetText localize "STR_vInAct_PullOut"; _Btn4 buttonSetAction "[life_vInact_curTarget] spawn life_fnc_pulloutAction; closeDialog 0;"; if (crew _curTarget isEqualTo []) then {_Btn4 ctrlEnable false;}; then remove _Btn4 ctrlEnable false; from around line 127. 16. Open core\init.sqf and find player setVariable ["restrained",false,true]; player setVariable ["Escorting",false,true]; player setVariable ["transporting",false,true]; player setVariable ["playerSurrender",false,true]; and add the following underneath: player setVariable ["ziptied",false,true]; player setVariable ["blindfolded",false,true]; player setVariable ["gagged",false,true]; 17. Repack your pbo and relaunch your server. Additional Notes: It is up to you to include the 50+ changes to other files in the framework to prevent ziptied people from performing certain actions like gathering, mining etc. I eventually will be making this more stream lined so that these changes are not needed so make sure you keep your files up to date. Leave any comments below regarding changes/updates and fixes, feel free to fork the repo and commit any changes you feel need to be made.
  10. 8 points
    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
  11. 7 points
    Adaptive Debit Cards I've looked around for a debit card script previously, and either couldn't find one, it wasn't updated for the latest framework, or it was incomplete. -- So I decided to give it a go myself. If you haven't seen or used Debit Cards on Altis Life before, they essentially make the purchase of items much easier and faster by taking money straight from a player's bank account, instead of their on-hand cash. From what I have also seen in the past, Debit Cards were forced upon the player, leading to problems such as Rebels not being able to rob people for their money, since it was safe and sound in their bank -- Which can easily ruin an economy. I've tried to help server owners out here by adding a few configuration options, including Taxing, setting a Tax amount, charging a custom amount for a Debit Card along with the disabling of debit cards in certain shops. This way, the player can decide weather or not to buy the card, and if they do, they will be charged extra for purchasing items with a Debit Card. How Debit Cards work: If the player is attempting to buy something from a shop, and they have enough money on-hand, the shop will take their cash. If they don't have that money on their person, but they have it in their bank account, that money is taken instead and they will also be charged extra in Tax (if it is enabled on the server). Cash on hand takes priority before Bank balance when buying items. If a player is attempting to sell an item and they have a Debit Card, the money made from the sale will go to their bank account. If they have no Debit Card it will be added to their on-hand cash. DISCLAIMER: These scripts were made on and tested on the most recent Altis Life Framework(v5.0.0) & 4.4r3. They may not work if you are attempting to use them on anything lower. If you are using Altis Life 4.4r3 please make sure your fn_mresArray.sqf has been updated to this: https://github.com/AsYetUntitled/Framework/commit/db66e545ef02faec2a2e9fd152eb5260b3deab8a ADDONS/OPTIONAL UPDATES Once you have finished this tutorial, feel free to install any of the updates below. They are 100% optional. (This list is a work in progress) Virtual Item: Tutorial Altis_Life.Altis 1. Download the file attached to this thread. 2. In Altis_Life.Altis\functions.hpp create the following class inside Life_Client_Core: class Debit { file = "core\debit"; class buyClothesDebit {}; class vehicleShopBuyDebit {}; class virt_buyDebit {}; class virt_sellDebit {}; class weaponShopBuySellDebit {}; class debitCheck {}; class buyDebit {}; }; 3. Open Config_Master.hpp, found in Altis_Life.Altis\config and add the following inside Life_Settings: /* Debit Card Configuration */ debit_tax = true; //Tax a player when they have used a Debit card to purchase something? - This is mainly a money sink in case everyone on your server owns a debit card, as they'll never have money on their person (so they can't be robbed) if they do. debit_taxAmount = 0.15; // Tax the player pays when purchasing with a debit card. Tax = Price * debit_taxAmount. debit_tax must be true. Eg. - If an item is $45,000 and your tax is set to 0.15, amount paid after tax will be $51,750. (total tax paid $6750.) debit_price = 75000; // Price of purchasing a debit card from the bank. debit_weapons = true; // Allows the use of debit cards when purchasing/selling weapons. debit_clothing = true; // Allows the use of debit cards when purchasing/selling clothing. debit_vItems = true; // Allows the use of Debit Cards when purchasing/selling virtual items. debit_vehicles = true; // Allows the use of Debit Cards when purchasing/renting/selling vehicles. 4. In Altis_Life.Altis\core open your configuration.sqf and add the following to Life Variables: IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS life_has_debit = false; 5. Move the debit folder for your version of Altis Life found in the .rar you (should have) downloaded from step 1 in to Altis_Life.Altis\core 6. Navigate to Altis_Life.Altis\dialog and open the following files: bank.hpp Find the following: class CloseButtonKey: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Close"; onButtonClick = "closeDialog 0;"; x = 0.35; y = 0.812; w = (6.25 / 40); h = (1 / 25); }; class MainBackground: Life_RscText { colorBackground[] = {0, 0, 0, 0.7}; idc = -1; x = 0.35; y = 0.2 + (11 / 250); w = 0.3; h = 0.652 - (22 / 250); }; Change to: class CloseButtonKey: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Close"; onButtonClick = "closeDialog 0;"; x = 0.438125 * safezoneW + safezoneX; y = 0.7024 * safezoneH + safezoneY; w = 0.0644531 * safezoneW; h = 0.022 * safezoneH; }; class MainBackground: Life_RscText { colorBackground[] = {0, 0, 0, 0.7}; idc = -1; x = 0.438125 * safezoneW + safezoneX; y = 0.3592 * safezoneH + safezoneY; w = 0.12375 * safezoneW; h = 0.341 * safezoneH; }; Also, add to class controls: class buyDebit: Life_RscButtonMenu { idc = 57623; onButtonClick = "[] call life_fnc_buyDebit"; colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5}; text = "$STR_Debit_PurchaseDebit"; x = 0.444312 * safezoneW + safezoneX; y = 0.6672 * safezoneH + safezoneY; w = 0.113437 * safezoneW; h = 0.022 * safezoneH; }; clothing.hpp Find: class BuyButtonKey: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Buy"; onButtonClick = "[] call life_fnc_buyClothes;"; x = 0.0822359 * safezoneW + safezoneX; y = 0.489992 * safezoneH + safezoneY; w = (6.25 / 40); h = (1 / 25); }; Change to: class BuyButtonKey: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Buy"; onButtonClick = "[0] call life_fnc_debitCheck;"; x = 0.0822359 * safezoneW + safezoneX; y = 0.489992 * safezoneH + safezoneY; w = (6.25 / 40); h = (1 / 25); }; shop_items.hpp Find: class ButtonAddG: Life_RscButtonMenu { idc = -1; text = "$STR_VS_BuyItem"; colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5}; onButtonClick = "[] spawn life_fnc_virt_buy;"; x = 0.12 + (0.35 / 2) - ((6.25 / 40) / 2); y = 0.70; w = (6.25 / 40); h = (1 / 25); }; class ButtonRemoveG: Life_RscButtonMenu { idc = -1; text = "$STR_VS_SellItem"; colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5}; onButtonClick = "[] call life_fnc_virt_sell"; x = 0.53 + (0.35 / 2) - ((6.25 / 40) / 2); y = 0.70; w = (6.25 / 40); h = (1 / 25); }; Change to: class ButtonAddG: Life_RscButtonMenu { idc = -1; text = "$STR_VS_BuyItem"; colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5}; onButtonClick = "[2] call life_fnc_debitCheck"; x = 0.12 + (0.35 / 2) - ((6.25 / 40) / 2); y = 0.70; w = (6.25 / 40); h = (1 / 25); }; class ButtonRemoveG: Life_RscButtonMenu { idc = -1; text = "$STR_VS_SellItem"; colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5}; onButtonClick = "[4] call life_fnc_debitCheck"; x = 0.53 + (0.35 / 2) - ((6.25 / 40) / 2); y = 0.70; w = (6.25 / 40); h = (1 / 25); }; shops.hpp Find: class ButtonBuySell: Life_RscButtonMenu { idc = 38405; text = "$STR_Global_Buy"; onButtonClick = "[] spawn life_fnc_weaponShopBuySell; true"; x = 0.1; y = 0.8 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; Change to: class ButtonBuySell: Life_RscButtonMenu { idc = 38405; text = "$STR_Global_Buy"; onButtonClick = "[1] call life_fnc_debitCheck;"; x = 0.1; y = 0.8 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; vehicleShop.hpp AND vehicleShop3D.hpp Find: class RentCar : Life_RscButtonMenu { idc = -1; text = "$STR_Global_RentVeh"; onButtonClick = "[false] spawn life_fnc_vehicleShopBuy;"; x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; class BuyCar : life_RscButtonMenu { idc = 2309; text = "$STR_Global_Buy"; onButtonClick = "[true] spawn life_fnc_vehicleShopBuy;"; x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; Change to: class RentCar : Life_RscButtonMenu { idc = -1; text = "$STR_Global_RentVeh"; onButtonClick = "[5] call life_fnc_debitCheck;"; x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; class BuyCar : life_RscButtonMenu { idc = 2309; text = "$STR_Global_Buy"; onButtonClick = "[3] call life_fnc_debitCheck;"; x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; 7. Go to Altis_Life.Altis\core\session and make changes to the following files -- IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS fn_requestReceived.sqf - Find "switch (playerSide) do {" and add the following to it's respective class: For Altis Life 5.0.0: For Altis Life 4.4r3: It should look like this (5.0.0): case west: { life_has_debit = _this select 12; CONST(life_coplevel,(_this select 7)); CONST(life_medicLevel,0); life_blacklisted = _this select 9; if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then { life_hunger = ((_this select 10) select 0); life_thirst = ((_this select 10) select 1); player setDamage ((_this select 10) select 2); }; }; fn_updatePartial.sqf - Add the following case below case 7. case 8: { _packet set[2,life_has_debit]; }; fn_updateRequest.sqf - Change the playerSide switch to: switch (playerSide) do { case civilian: { _packet pushBack life_is_arrested; _packet pushBack _alive; _packet pushBack _position; _packet pushBack life_has_debit; }; case west: { _packet pushBack life_has_debit; }; case independent: { _packet pushBack life_has_debit; }; }; 8. Open your stringtable.xml and create the following package: 9. Open cfgRemoteExec.hpp and add the following Server Only Function: IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS F(TON_fnc_debitBought,SERVER) Life_Server IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS SECTION 1. Open life_server\config.cpp and add the following class to class Systems: class debitBought {}; 2. Move fn_debitBought.sqf from your version of Altis Life you (should have) have downloaded from step 1 in to life_server\functions\systems 3. Go to life_server\Functions\MySQL and make the changes to the following files: fn_queryRequest.sqf For Altis Life 5.0.0: For Altis Life 4.4r3: fn_updatePartial.sqf Find: case 7: { _array = [_this,2,[],[[]]] call BIS_fnc_param; [_uid,_side,_array,0] call TON_fnc_keyManagement; }; Add under: For Altis Life 5.0.0: case 8: { _query = format ["UPDATE players SET debit='1' WHERE pid='%1'",_uid]; }; For Altis Life 4.4r3: case 8: { _query = format ["UPDATE players SET debit='1' WHERE playerid='%1'",_uid]; }; fn_updateRequest.sqf Find: private ["_uid","_side","_cash","_bank","_licenses","_gear","_stats","_name","_alive","_position","_query","_thread"]; _uid = [_this,0,"",[""]] call BIS_fnc_param; _name = [_this,1,"",[""]] call BIS_fnc_param; _side = [_this,2,sideUnknown,[civilian]] call BIS_fnc_param; _cash = [_this,3,0,[0]] call BIS_fnc_param; _bank = [_this,4,5000,[0]] call BIS_fnc_param; _licenses = [_this,5,[],[[]]] call BIS_fnc_param; _gear = [_this,6,[],[[]]] call BIS_fnc_param; _stats = [_this,7,[100,100],[[]]] call BIS_fnc_param; _alive = [_this,9,false,[true]] call BIS_fnc_param; _position = [_this,10,[],[[]]] call BIS_fnc_param; Add to the Private array & below _position = [_this,10,[],[[]]] call BIS_fnc_param; (Make sure you add it, do not overwrite what's currently there) private ["_debitCiv","_debit"]; _debitCiv = [_this,11,false,[true]] call BIS_fnc_param; _debit = [_this,8,false,[true]] call BIS_fnc_param; For Altis Life 5.0.0: For Altis Life 4.4r3: Database Changes IF YOU PLAN ON INSTALLING THE VIRTUAL ITEM ADDON FEEL FREE TO IGNORE THIS Execute the following on your database: ALTER TABLE `players` ADD (`debit` int(1) NOT NULL DEFAULT '0'); Battleye Add the following to your remoteexec.txt in your Battleye working directory: !TON_fnc_debitBought All done! All you need to do now is configure the settings to your preference and you should be good to go! I will be revising the scripts on this thread at some point, but at the moment I just don't have the time to do it. I also plan on implementing addons in the future which work alongside debit cards, so keep a look out! If you run in to a problem, don't hesitate to PM me or post on the thread. Debit Cards.rar
  12. 7 points
    Hello, I'm sorry to come out with the very serious title but this is quite important, A user by the name of Ellis came onto our community pretending to be a developer/scripter and wanted to help (he does this to gain trust and access), he passed though some ranks and was given access to our dedicated server which is with OVH. After a day, he copied all the mission files, scripts and proceeded to delete the whole server including OVH server files making it corrupt. He has also copied our whole website and made his own website with an illegal version of IPS and a stolen theme by IPSFocus, the link to the website: http://www.maldenlifeuk.co.uk He has stolen everything we made and is now making his own (our mission files and custom scripts) server, this user will also be using our infiSTAR meaning he is using a stolen version if it helps. YOU MUST DEAL WITH CAUTION when dealing with this certain individual, please don't let him do this to anyone else. Thank you for your time. P.S as of now, we are attempting to get backups but as he corrupted the OVH server it seems near impossible. Any advice would be highly appreciated.
  13. 7 points
    Autor: Entity Replace the spawnSelection.hpp by that: class life_spawn_selection { idd = 38500; movingEnabled = 0; enableSimulation = 1; class controlsBackground { class life_RscTitleBackground: Life_RscText { idc = 1000; x = 0.0101577 * safezoneW + safezoneX; y = 0.0291999 * safezoneH + safezoneY; w = 0.170156 * safezoneW; h = 0.9438 * safezoneH; colorBackground[] = {0.294,0.286,0.286,0.8}; }; class Title: Life_RscText { idc = 1001; text = "Spawn Selection"; x = 0.0132501 * safezoneW + safezoneX; y = 0.0402 * safezoneH + safezoneY; w = 0.164999 * safezoneW; h = 0.0242 * safezoneH; }; class MapView: Life_RscMapControl { idc = 38502; x = 0.183407 * safezoneW + safezoneX; y = 0.0292 * safezoneH + safezoneY; w = 0.8085 * safezoneW; h = 0.9438 * safezoneH; maxSatelliteAlpha = 0.75; alphaFadeStartScale = 1.15; alphaFadeEndScale = 1.29; }; }; class controls { class spawnList: Life_RscListNbox { idc = 38510; x = 0.0153125 * safezoneW + safezoneX; y = 0.071 * safezoneH + safezoneY; w = 0.159844 * safezoneW; h = 0.847 * safezoneH; text = ""; sizeEx = 0.041; coloumns[] = {0,0,0.9}; drawSideArrows = 1; idcLeft = -1; idcRight = -1; rowHeight = 0.050; onLBSelChanged = "_this call life_fnc_spawnPointSelected;"; }; class spawnButton: Life_RscButtonMenu { idc = -1; text = "Enter"; x = 0.0153125 * safezoneW + safezoneX; y = 0.9246 * safezoneH + safezoneY; w = 0.159844 * safezoneW; h = 0.033 * safezoneH; style = "0x02"; 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}; colorBackgroundActive[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",1}; colorBackgroundDisabled[] = {0.95,0.95,0.95,0}; offsetX = 0.003; offsetY = 0.003; offsetPressedX = 0.002; offsetPressedY = 0.002; colorShadow[] = {0,0,0,1}; colorBorder[] = {0,0,0,0}; borderSize = 0.008; onButtonClick = "[] call life_fnc_spawnConfirm"; }; }; }; Screenshot:http://imgur.com/nrCSz9c Finish !
  14. 7 points
    ********************************************************************************************* Hey Guys, today i want to share my trunk with all of u and how to install it ********************************************************************************************* to start things of here are some information about it: The trunk has 2 new buttons one to take all (as much as possible) one to store all ( as much as possible) it has ha new layout, and yea, it is not the best but yea go with it, design is not my strongest It will look like this: ********************************************************************************************* Tested in versions: 5.0.0 4.4.1 ********************************************************************************************* first we need to Edit the menu so go to dialog/trunk.hpp and replace everythin with my code that done we go to our functions.hpp / functions.h in the root directory nad add unter class vehicle the following: class vehTakeAllItem {}; class vehStoreAllItem {}; so it should look like this next of we go in the directory core/vehicle and create 2 new sqf files the first one: fn_vehStoreAllItem.sqf: and fn_vehTakeAllItem.sqf: so with this done it should work, if i forgot something please let me know below
  15. 7 points
    The problem with public content Hundreds of hours get put into missionfiles daily to make servers stand out from the masses and attract players. Certain people though invest this time into stealing your work and possibly even making money with it. ObfuSQF is the solution to this problem. Obfuscate your missionfile ObfuSQF allows you to easily obfuscate your missionfile and prevent others from stealing your work. Obfuscated missionfiles cannot be opened with popular tools, their content stays completely hidden. Protection against copies ObfuSQF comes with your own private key which allows your missionfile to flawlessly work on your gameserver. If someone attempts to copy your missionfile and use it on their server, ObfuSQF will crash it. Your missionfile will only work on authorized servers. Easy to use Drag and drop your missionfile into your webbrowser, wait for your file to be processed and download your obfuscated missionfile and private key. Working with ObfuSQF is easy, no additional download required. Desktop client Do you automate the process of restarting/packing your missionfile on your server? Use ObfuSQF's desktop client to automate the obfuscation process, visting the website is not required. Click here to visit the website
  16. 7 points
    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.
  17. 6 points
    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>"]); 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 icons section folder, if you don't have one (you should) make one and... Done health.paa drink.paa food.paa
  18. 6 points
    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
  19. 6 points
    @John Meiers @silencedaxis Totally agree with you what ever happend to hug and make up or just bang their heads together
  20. 6 points
    Everything in one service Available from everywhere ArmA Remote Admin's web interface is available on any device. Remotely access your server from your phone, edit users and administrate on the go. Scheduler - Daily routines for your gameservers Use ARA's build in scheduler to create daily routines for your gameservers. Restart your servers on fixed times, send messages, run applications and more. User Account Validation Filter out unwanted accounts by playtime, owned games and VAC bans to prevent cheaters from joining your server. Reserved Slots Support Create reserved slots for specific players with ease RCON access via web interface View ingame messages, send messages, kick/ban users, load different missions and more. User accounts Allow other users with valid Maverick Applications accounts to access certain features of your gameservers such as restarting, scheduler editing, rcon access and more allowing you to easily configure accounts for moderators and other administrators. System Diagnostics View server diagnostics such as server performance, CPU usage, RAM usage and other diagnostics live. Remote Server Control Start/Stop/Restart your server from everywhere by clicking a button Whitelists Add a whitelist to your server and manage it with ease. System Failure Handling Be notified when your server/gameserver crashes or becomes unavailable and have it automatically restarted to ensure uptimes. WebLogs WebLogs provides an overview over everything that is happening to your server. From RCon messages, to bans, kicks and edits of your scheduler, everything is logged. Offline Solution If the master server is not reachable, offline dumped data will be used to keep automatic server restarts and other functionalities running. Click here to visit the website
  21. 6 points
    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.
  22. 6 points
    Welcome to the official advertisement thread for XtG Community's Australia Life Server! Information Links: Website Forums TeamSpeak Server Development Log Post Special Thanks Too: RyanTT Ciaran demigod Aussie The Altis Life Community Wombat Servers XtG Development Team Tonic [Altis Life Framework Conversion] Server & Overall Community Reputation: Official XtG Community Forums Quotes: XtG Community AU - Australia Life RPG (Required Mods) Steam Workshop Collection These mods you download from the workshop should appear automatically into your Arma 3 launcher, you just need to enable all those mods from that collections list. Map Version: 5.0.8 WARNING: This version of the Australia map does require Apex DLC in order to function 100% correctly. However. You can still play on the server regardless if you do not have the DLC. You may experience missing buildings and textures in certain areas. 1: Download all the workshop items from the collection (Link is above.) 2: Launch Arma 3's Launcher and click on the "Mods" tab, Then enable all mods that were stated in the collection. 3: After that simply click play and look for our server! XtG Community AU | Australia Life RPG | Workshop Mod Connection Info: 103.231.91.5:2322 Query Info: 103.231.91.5:2323 Current Server Patch: V0.A5 Alright so we have finally launched our Australia Life server after months of collecting some loyal players, we manage to gather the funds for a nice server not dedicated but its a slot server, works fine so far with 20 players 35 - 70FPS. This is a modded server of the Altis Life 4.4 Framework, we take no credit for any of the code that is in our mission file besides the scripts that contain our header (Author Signature) We run the Australia Map along with several mods including: Australia Map (5.0.8) There are whitelisted rebels, you cannot become a rebel without being whitelisted, you have access to nearly everything in Arma. As many people would think this is bad for Altis life or would defeat the purpose of it, We see this a new way of playing Altis Life, Rebels have up to 10 levels of rank and they earn these ranks by showing the rebel leader they are capable of pure RP and leadership skills. After leveling up you gain access to new vehicles and weapons overtime making you more powerful in the team. The rebels are based off a resistance, they are people that know a lot of what the government is actually doing and how corrupt they are. We have also implemented the Military system using the same faction as cops but only have access to the spawn point and weapons if they are the level required. (Level 7) Civilians have access to illegal stuff still but they are more "Civilized" you can still commit crimes like robbing the Commonwealth Bank or Gas stations but it will be sectioned as "organized crime by gangs". Federal Reserve and other high government associations will only be able to be tampered by the Resistance (Rebels) - These crimes are sectioned as "Terrorism". Police have the same roll as normal, they protect what they can and stop crime where its coming from, although because now that we have whitelisted rebels its a bit difficult for cops so rebels + cops will try to avoid action as much as possible allowing the military to take the necessary action to resolve the rebel resistance. At the moment we are still trying to organize how much change we want to do to the RP method on our server but its coming along nicely. I know i haven't stated much in this post about it. Just a brief description but it gives you the clear idea i hope. Feature Highlights of the server: Sydney, Brisbane, Perth, Adelaide & Melbourne Cities Completed Persistent Player Saving Persistent Vehicle Saving 250k Money Start Capture Gang Hideouts 5 Hidden Christmas Tress (Find them to get a 100k Reward!) Map Size of 1600km(2) (Altis is 260km2) Earplugs Suicide Vest Speed Bomb Dynamic Market System Toilet System Phone Battery System Australian Police Skins For Vehicles Great looking vehicle civilian skins. Good FPS - 40 In-City / 70+ Out-City Dedicated Staff Team & Development Team Storyline Chapter 1 In the year 2019 a country called Australia there lived a population of people of 22 million residents and counting. All mixed of Cops, Medics, Rebels, 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. But out there somewhere was a group of rebels. The resistance of the civilians. The only people left in Australia that wasn't killed and know what the real truth of what happened to the economy. The economy was destroyed by the Government in a attempt to take over Australia and turn the Civilians into slaves. The rebels hide and gather funds in the illegal lands just south of the restricted border where no government agent dares to cross. In the realistic world Civilians still think rebels are bad and do things for a bad cause and the Government doing things for a good cause. The rebels yet have something to prove to the population of Australia. To be continued... Media - Images & Videos
  23. 6 points
    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
  24. 6 points
    Blue Dragon Gaming We are a new community for altis life Built by Great Dev team and Friendly Staff, we have Fantastic Server side hardware running off google infrastructure with a GB connection for those lovely smooth frames. We are Run by " Blue Dragon Computer Systems Company " Base in Australian but the server is located in the US Content: Our Map is all custom layout and architecture with Fantastic content and scripts provided by the Lovely people on " www.altisliferpg.com " . # MoNtEcRiStO© # AlaskaVet # Repentz Thank you for the help with scripts and providing open source content for us Reminds me of the old Arma 2 community days "share the Love" If you would like to be apart of the growing community or would like to share ideas for the Server please feel free to contact me or join the server. Server Name BlueDragon Gaming | Altis Life Begins With You | $500K Start Teamspeak bd-gaming.com:10190 Forums BlueDragon Gaming
  25. 6 points
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Difficulty: Easy Publish by: suffer4real Source AltisLifeRPG.com cache -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Hello, many of you probably know this problem. Then let's start Open your " fn_initCop.sqf " and replaced this block: if(!(str(player) in ["cop_1","cop_2","cop_3","cop_4"])) then { if((FETCH_CONST(life_coplevel) == 1) && (FETCH_CONST(life_adminlevel) == 1)) then { ["NotWhitelisted",false,true] call BIS_fnc_endMission; sleep 35; }; }; Replace With : if(!(str(player) in ["cop_99"])) then { if((FETCH_CONST(life_coplevel) < 1) && (FETCH_CONST(life_adminlevel) == 0)) then { ["NotWhitelisted",false,true] call BIS_fnc_endMission; sleep 35; }; }; Now open your Mission.sqm and change cop_1, cop_2, cop_3, cop_4 with your desired name Example: ( WhiteListed - Cop 1 )
  26. 5 points
    Author: Black Lagoon Original Video: Youtube (but this video not working on 5.0 it is old video) Hi, 1. Download this files, Download files from mega 2. Extract all files to your mission file. 3. Go into your "Functions.hpp" then add this codes after class Master_Directory class Market { file = "core\market"; class openMarketView {}; class refreshMarketView {}; class marketShortView {}; class marketBuy {}; class marketSell {}; class marketGetBuyPrice {}; class marketGetSellPrice {}; class marketconfiguration {}; class marketReset {}; class marketChange {}; class marketGetRow {}; class marketGetPriceRow {}; class marketSetPriceRow {}; }; Like this, class Master_Directory { file = "core"; class initCiv {}; class initCop {}; class initMedic {}; class setupActions {}; class setupEVH {}; class survival {}; class welcomeNotification {}; }; class Market { file = "core\market"; class openMarketView {}; class refreshMarketView {}; class marketShortView {}; class marketBuy {}; class marketSell {}; class marketGetBuyPrice {}; class marketGetSellPrice {}; class marketconfiguration {}; class marketReset {}; class marketChange {}; class marketGetRow {}; class marketGetPriceRow {}; class marketSetPriceRow {}; }; 4. And add this code to into your class Functions. class randomRound {}; 5. Then go into your "dialogs\MasterHandler.hpp" and add this code to end of the file. #include "common_EditorWrapper.hpp" #include "market.hpp" 6. Go into your "dialogs\player_inv.hpp" and add this code after the class ButtonSyncData. class ButtonMarket : Life_RscButtonMenu { idc = 3025; text = "Market"; onButtonClick = "[] spawn life_fnc_openMarketView;"; x = 0.26 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH)); y = 0.805; w = (6.25 / 40); h = (1 / 25); }; Like this, class ButtonSyncData : life_RscButtonMenu { idc = -1; //shortcuts[] = {0x00050000 + 2}; text = "$STR_PM_SyncData"; onButtonClick = "[] call SOCK_fnc_syncData;"; x = 0.1; y = 0.805; w = (6.25 / 40); h = (1 / 25); }; class ButtonMarket : Life_RscButtonMenu { idc = 3025; text = "Market"; onButtonClick = "[] spawn life_fnc_openMarketView;"; x = 0.26 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH)); y = 0.805; w = (6.25 / 40); h = (1 / 25); }; 7. Go into your "init.sqf" at the main directory and add this code. if(isDedicated && isNil("life_market_prices")) then { [] call life_fnc_marketconfiguration; diag_log "Market prices generated!"; "life_market_prices" addPublicVariableEventHandler { diag_log format["Market prices updated! %1", _this select 1]; }; //Start server fsm [] execFSM "core\fsm\server.fsm"; diag_log "Server FSM executed"; }; Finally, you can edit item prices from fn_marketConfiguration.sqf and you can edit "News: item increased-decreased." broadcasts from fn_marketChange.sqf".
  27. 5 points
    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 = [_this,0,Objnull,[Objnull]] call BIS_fnc_param; if(isNull _target) exitWith {}; _revivable = _target getVariable ["Revive",false]; if (_revivable) exitWith {}; if(player distance _target > 5) exitWith {}; if(life_action_inUse) exitWith {}; if(player isEqualTo _target) exitWith {}; _title = format[localize "STR_CPR_Progress"]; life_action_inUse = true; _target setVariable ["Reviving",player,TRUE]; //Setup our progress bar 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 + 0.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 ["Reviving",ObjNull] != player) exitWith {}; if(player isEqualTo _target) exitWith {}; if (_revivable) exitWith {}; if(isNull _target) 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;}; if(player isEqualTo _target) exitWith {life_action_inUse = false;}; if (_revivable) exitWith {life_action_inUse = false;}; if(isNull _target) exitWith {life_action_inUse = false;}; life_action_inUse = false; _break = floor (random 100); if (_break < 84) exitWith {[_target] spawn life_fnc_cprkit;}; _target setVariable ["Revive",TRUE,TRUE]; [] 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"): { [cursorObject] spawn life_fnc_cprKit; closeDialog 0; }; 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!
  28. 5 points
    Looking for a server that you wont get RDM on. Come join the Roleplay community you deserved where your mind is the creator of your character. Why should you join our community for we offer planting your own crops for example weed, beans, cotton, ect if you can buy the seed you can plant it yourself. Doesn't matter what character you desire to be weather it's a criminal a, innocent bystander , a good cop , or you could go the crooked cop way but be warned you may be put in the same jail with the criminals you arrested. You are able to decide what you want to be and we always take suggestions from our community to better it. Come join us and build your character Our Features: Plant you're own drugs/Crops Better Text message system Custom Map Custom Textures Usable Drug Effects Ear Plugs (Shift + L ) Hand Gesture's (Shift + 1 - 4 ) Realistic Towing Custom Jail Timer with Jail Details Custom car skins Intro video Intro Music Custom Rob Bank Script Bags for gold bars when you rob the bank Gather Evidence Female Clothing Male Clothing Radio Ear Piece (Cops and Ems) Task Force Radio Custom Medical System Custom phones (By aaron) Custom Status bar and a bunch more TS IP: classicarma3life.ts.io Server IP: 74.91.126.227 Port:2302 Website: http://classicarma3life.invisionzone.com/ In Game IPAD and Menu In game Screenshots Streamers that play on the server http://www.multitwitch.tv/jbopwnzu/kawaiireevohh/jackbuxton98/aaronwalkertv/kazobros/admiralgamingofficial/colorgambleyt/thymystifiedsky Videos of the server
  29. 5 points
    Tell us about yourself: About me, well. My name's not actually David, for obvious reasons. I'm 16 years old, I live in Melbourne, Australia and have a keen interest in software development. I have +3000 hours in ArmA 3, most of which have been spent testing and developing 'Life' Servers. I have started many communities over my time, most of which didn't take off but some did. I have firm views on certain issues regarding ArmA 3 servers and to be honest, I believe that people should have a go at things before they ask for help. Otherwise what's the point of starting a community if all you are going to do is solely rely on the people who release they work over here. What's your experience with SQF and SQL languages, or other sorts of Arma related development? Most of my knowledge stems from PHP and HTML (CSS, LESS, etc.), This is what helped me grasp and understanding of SQF. I'm really confident with SQL, I could just about recite any query you want off the top of my head. On my profile I state that learning PHP played a key role in learning to understand SQF syntax. Now, I'm not saying I'm great at SQF, but I know my way around it. I have extensive knowledge in the making of GUIs. In fact I posted one of my works in the 4.x script area - link. As i stated before I'm doing a software development course as a year 12 subject, I am sitting on a 91.5% as an overall grade, so i can't be that bad.. can I? Why do you want to be a Helper? I enjoy helping people overcome issues. Whether this be ArmA issues or other things such as websites. I find that my stills would be going to waste if i didn't use them or even share them with others. Becoming a helper/moderator has also been a 'low key' goal for me. I can see the this community returning to its former days, it just needs some help to get there, and I'm prepared to help. What can you bring to the community? I'm a great leader and am able to communicate one on one and in teams. I have some ideas for things that we could implement into the community, more information on that at a later date. Keeping this a 'safe place' (I'm not a raging feminist don't worry) is a priority for me as well, I won't stand for bullying or racism, etc. I believe helping people is one thing but helping them become better is another, in that helping people fix an issue is one thing but helping people learn how to fix it themselves is even better. "Give a man a fish and you feed him for a day; teach a man to fish and you'll feed him for a lifetime." . Here's one of my rants - link. If you were to become a helper, would a moderator position be appealing to you as well in the future? Yes, most definitely. Being a moderator on this forum has been a goal for me ever since the site came back up.
  30. 5 points
    ============================================================================================================ 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
  31. 5 points
    This will be a 150 video series a video a day so in 150 days you have an amazing altis life server
  32. 5 points
    Tell us about yourself: I am 16 years old from the UK, I have played Arma 3 for many years during that time I mostly played on servers that used the Altis Life Framework. As well as playing on these servers I made/developed them giving me the knowledge that can be useful in helping other members of the community who want to make their own servers. I am generally kind, thoughtful and helpful. What's your experience with SQF and SQL languages, or other sorts of Arma related development? I'm mostly a website developer however during my time on Arma 3 and development I have learnt how to develop Altis Life servers, mostly taught by Dave650. Also used to make quality textures (Cop uniforms etc). Why do you want to be a Helper? There are numerous reasons to why I would like to become a helper one being of which that I love help people, second being that I feel like this is the role for me, to help people, thirdly being that I NEED to give back to this nice community so I can help get the community back to its glory days. I and many others have used this as a helping point or a place where we can find scripts etc making me want to give even more back. There are much more reasons including: I am a welcoming person. I want to make sure everyone is happy. Want to help Altis Life servers get better. What can you bring to the community? I can bring a helpful personality into the community as well as courage and determination, I never like leaving things unfinished so I will never leave someones to issue unfinished! I will also bring a nice warm, fuzzy feeling to the community welcoming new members and people who are new to Arma 3 and development as well as preventing people from being outed and lonely due to racism, sexism, homophobia and bullying, or other reasons. If you were to become a helper, would a moderator position be appealing to you as well in the future? Yes, it would be. Why? I like to help people and if being a moderator means I've helped and are helping people then so be it Sorry if I worded anything incorrectly!
  33. 5 points
    unban me from teamspeak then <16:15:33> Trying to resolve hostname ts.projectoriginsarma.com <16:15:35> Trying to connect to server on ts.projectoriginsarma.com <16:15:35> You are banned permanently. Reason: "Harry Potter | Asshat?"
  34. 5 points
    This community is absolutely shocking i agree with you @JedINyte they banned me for clicking respawn and when i talked to them about it hey called me a retard and banned me from teamspeak. Narcotics said i was an asshat for bringing it up. Plus the owner R.Paxton spreads crap about you to other servers and fakes stuff to get you banned
  35. 5 points
    Not sure why people are reporting his post, everyone has a right to voice his option, if you don't want negative shit said about your server, don't do dumb shit. Once again this is why AL is full of retard kids thinking they are going to get rich and have a big server, when in reality you're server will never last past 2 months
  36. 5 points
    Working for me 5.0
  37. 5 points
  38. 5 points
    For those that wish to change their buttons for surrendering, restraining etc, here is a semi comprehensive list. ESC = 1 F1 = 59 F2 = 60 F3 = 61 F4 = 62 F5 = 63 F6 = 64 F7 = 65 F8 = 66 F9 = 67 F10 = 68 F11 = 87 F12 = 88 PRINT = 183 SCROLL = 70 PAUSE = 197 ^ = 41 1 = 2 2 = 3 3 = 4 4 = 5 5 = 6 6 = 7 7 = 8 8 = 9 9 = 10 0 = 11 ß = 12 ´ = 13 # = 43 < = 86 , = 51 . = 52 - = 53 TAB = 15 ENTER = 28 DELETE = 211 BACKSPACE = 14 INSERT = 210 END = 207 PAGEUP = 201 PAGEDOWN = 209 CAPS = 58 A = 30 B = 48 C = 46 D = 32 E = 18 F = 33 G = 34 H = 35 I = 23 J = 36 K = 37 L = 38 M = 50 N = 49 O = 24 P = 25 Q = 16 U = 22 R = 19 S = 31 T = 20 V = 47 W = 17 X = 45 Y = 44 Z = 21 SHIFTL = 42 SHIFTR = 54 UP = 200 DOWN = 208 LEFT = 203 RIGHT = 205 NUM_0 = 82 NUM_1 = 79 NUM_2 = 80 NUM_3 = 81 NUM_4 = 75 NUM_5 = 76 NUM_6 = 77 NUM_7 = 71 NUM_8 = 72 NUM_9 = 73 NUM_+ = 78 NUM = 69 NUM_/ = 181 NUM_* = 55 NUM_- = 74 NUM_, = 83 NUM_ENTER = 156 STRGL = 29 STRGR = 157 WINL = 220 WINR = 219 ALT = 56 SPACE = 57 ALTGR = 184
  39. 5 points
    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
  40. 5 points
    (given permission to post by Montecristo) This kind of behavior from an arma community is unacceptable and in my opinion should have no part in the Altis Life communitie(s) Bgill678 has been banned from this website/discord and more issues of him being removed from other structure based communities should hopefully come very soon. Yesterday my community was attacked by another community that goes by the name of 'Elemental Gaming Networks'. 3-4 of their members including their owner who goes by the name 'Bailey' or Bgill678 had joined our teamspeak and spammed our TFR Channel with this: https://gyazo.com/24e5b788284d731a33f28a660525f58e We then joined their teamspeak to discuss this, being cautious I decided to turn on my VPN and we discussed/argued about why this had happened, two of our community directors also joined the teamspeak. This is when my our directors started getting ddosed by members of their community, obviously I can't prove this but it's quite clear. They also claim a few of their members lost connection aswell We banned them off our teamspeak, they did the same. We then joined their teamspeak, here they are: https://gyazo.com/320a3b2deb60724f172deb29782a3fd1 I then joined their website and found more evidence of this: https://gyazo.com/bd7a73ef8fc1068ffe82570fd14a9022
  41. 4 points
    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!
  42. 4 points
    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) & 4.4r3. 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: If you are using Altis Life 5.0.0: //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"}; }; If you are using Altis Life 4.x: class ymarket { name = "STR_Shops_yMarket"; side = ""; icense = ""; level[] = { "", "", -1, "" }; 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!
  43. 4 points
    Could you please remove any framework related files from your video (and the others)? This is in breach of the license, attached to the files
  44. 4 points
    That is a serious accusation to make paxton please show me proof of me ddosing or treatening to as i find it icumbent that you cease and desist your pointless lies. And @Blake Jake going on to a server with a second account is not hacking it is a false positive
  45. 4 points
    Slot Machines By Papabear This script will allow your players to gamble away their money, everyone knows how slots work so.. I have also taken the time to stop duping/exploiting with this script with updatePartial calls, which everyone should look into. This script is based around a 1 million dollar start, the way it is, most people will lose money, if you wish to switch prices do so in the fn_slotSpin.sqf Let's begin. Download these icons, place them wherever you choose, but make sure the fn_slotSpin calls to the right location of them: Link 1: https://drive.google.com/open?id=0B21RLPd9cvL-WWsyeUdfWUsxUTg Link 2: http://www.filedropper.com/slotmachine Go into functions.hpp in main directory, place this under the civilian array: class slotSpin {}; class slotmachine {}; Go into core/civilian, add these new sqf files, first is called fn_slotmachine.sqf: /* Creates the Slot Machine GUI */ createDialog "SlotMachineGUI"; disableSerialization; Next, add a file called fn_slotSpin.sqf: /* File: fn_slotSpin.sqf Author: Jacob "PapaBear" Tyler Description: Takes bet, spins slots, determines if win, pays */ private["_slot","_slot1","_slot2","_slot3","_winnings","_slotcash","_betamt","_display"]; _betamt = [_this,0,1,[0]] call BIS_fnc_param; if(life_cash < _betamt) exitWith {hint format["You do not have enough money to play.",_betamt];}; life_cash = life_cash - _betamt; disableSerialization; _display = findDisplay 5780; _slotPic1 = _display displayCtrl 5771; _slotPic2 = _display displayCtrl 5772; _slotPic3 = _display displayCtrl 5773; _winningsText = _display displayCtrl 5775; _bet1 = _display displayCtrl 5778; _bet2 = _display displayCtrl 5779; _bet3 = _display displayCtrl 5781; _bet4 = _display displayCtrl 5782; _bet1 ctrlEnable false; _bet2 ctrlEnable false; _bet3 ctrlEnable false; _bet4 ctrlEnable false; _number = ceil(random 7); _pplayer = _this select 0; if (_number isEqualTo 0) then {_slot1 = 0; _slotPic1 ctrlSetText "textures\SlotMachine\slot_zero.paa";}; if (_number isEqualTo 1) then {_slot1 = 100; _slotPic1 ctrlSetText "textures\SlotMachine\slot_one.paa";}; if (_number isEqualTo 2) then {_slot1 = 200; _slotPic1 ctrlSetText "textures\SlotMachine\slot_two.paa";}; if (_number isEqualTo 3) then {_slot1 = 300; _slotPic1 ctrlSetText "textures\SlotMachine\slot_three.paa";}; if (_number isEqualTo 4) then {_slot1 = 400; _slotPic1 ctrlSetText "textures\SlotMachine\slot_four.paa";}; if (_number isEqualTo 5) then {_slot1 = 500; _slotPic1 ctrlSetText "textures\SlotMachine\slot_five.paa";}; if (_number isEqualTo 6) then {_slot1 = 600; _slotPic1 ctrlSetText "textures\SlotMachine\slot_six.paa";}; if (_number isEqualTo 7) then {_slot1 = 700; _slotPic1 ctrlSetText "textures\SlotMachine\slot_seven.paa";}; life_action_inUse = true; sleep 0.5; _number = ceil(random 7); _pplayer = _this select 0; if (_number isEqualTo 0) then {_slot2 = 0; _slotPic2 ctrlSetText "textures\SlotMachine\slot_zero.paa";}; if (_number isEqualTo 1) then {_slot2 = 10; _slotPic2 ctrlSetText "textures\SlotMachine\slot_one.paa";}; if (_number isEqualTo 2) then {_slot2 = 20; _slotPic2 ctrlSetText "textures\SlotMachine\slot_two.paa";}; if (_number isEqualTo 3) then {_slot2 = 30; _slotPic2 ctrlSetText "textures\SlotMachine\slot_three.paa";}; if (_number isEqualTo 4) then {_slot2 = 40; _slotPic2 ctrlSetText "textures\SlotMachine\slot_four.paa";}; if (_number isEqualTo 5) then {_slot2 = 50; _slotPic2 ctrlSetText "textures\SlotMachine\slot_five.paa";}; if (_number isEqualTo 6) then {_slot2 = 60; _slotPic2 ctrlSetText "textures\SlotMachine\slot_six.paa";}; if (_number isEqualTo 7) then {_slot2 = 70; _slotPic2 ctrlSetText "textures\SlotMachine\slot_seven.paa";}; sleep 0.5; _number = ceil(random 7); _pplayer = _this select 0; if (_number isEqualTo 0) then {_slot3 = 0; _slotPic3 ctrlSetText "textures\SlotMachine\slot_zero.paa";}; if (_number isEqualTo 1) then {_slot3 = 1; _slotPic3 ctrlSetText "textures\SlotMachine\slot_one.paa"; }; if (_number isEqualTo 2) then {_slot3 = 2; _slotPic3 ctrlSetText "textures\SlotMachine\slot_two.paa"; }; if (_number isEqualTo 3) then {_slot3 = 3; _slotPic3 ctrlSetText "textures\SlotMachine\slot_three.paa"; }; if (_number isEqualTo 4) then {_slot3 = 4; _slotPic3 ctrlSetText "textures\SlotMachine\slot_four.paa"; ;}; if (_number isEqualTo 5) then {_slot3 = 5; _slotPic3 ctrlSetText "textures\SlotMachine\slot_five.paa"; }; if (_number isEqualTo 6) then {_slot3 = 6; _slotPic3 ctrlSetText "textures\SlotMachine\slot_six.paa"; }; if (_number isEqualTo 7) then {_slot3 = 7; _slotPic3 ctrlSetText "textures\SlotMachine\slot_seven.paa"; }; sleep 0.5; _slot = _slot1 + _slot2 + _slot3; //cases for wins switch (_slot) do { case 111:{_winnings = 4000;}; case 110:{_winnings = 800;}; case 123:{_winnings = 900;}; case 211:{_winnings = 80;}; case 123:{_winnings = 800;}; case 234:{_winnings = 800;}; case 345:{_winnings = 9000;}; case 456:{_winnings = 1100;}; case 567:{_winnings = 1200;}; case 311:{_winnings = 800;}; case 411:{_winnings = 800;}; case 511:{_winnings = 800;}; case 611:{_winnings = 800;}; case 110:{_winnings = 800;}; case 112:{_winnings = 800;}; case 113:{_winnings = 800;}; case 114:{_winnings = 800;}; case 115:{_winnings = 800;}; case 116:{_winnings = 800;}; case 121:{_winnings = 600;}; case 131:{_winnings = 600;}; case 141:{_winnings = 600;}; case 151:{_winnings = 600;}; case 171:{_winnings = 600;}; case 121:{_winnings = 600;}; case 222:{_winnings = 3000;}; case 333:{_winnings = 2000;}; case 444:{_winnings = 2000;}; case 555:{_winnings = 1500;}; case 666:{_winnings = 25000;}; case 777:{_winnings = 45000;}; default {_winnings = 0;} }; //multiple winnings by bet amount _slotcash = _winnings * ( _betamt / 1000 ); life_cash = life_cash + _slotcash; _winningsText ctrlSetStructuredText parseText format["<t size='2.6px' color='#0099ff'>%1$</t>",_slotcash]; _bet1 ctrlEnable true; _bet2 ctrlEnable true; _bet3 ctrlEnable true; _bet4 ctrlEnable true; life_action_inUse = false; [0] call SOCK_fnc_updatePartial; Next, go into your dialog folder, add this and call it slot_machine.hpp: /* File: slot_machine.hpp Author: Jacob "PapaBear" Tyler Description: Takes bet, spins slots, determines if win, pays */ class SlotMachineGUI { idd = 5780; movingEnabled = false; enableSimulation = true; class controlsBackground { class RscFrame_1800: life_RscText { idc = -1; x = 0.29375 * safezoneW + safezoneX; y = 0.225 * safezoneH + safezoneY; w = 0.4125 * safezoneW; h = 0.55 * safezoneH; colorBackground[] = {0,0,0,0.7}; }; class RscText_1000: life_RscText { idc = -1; text = "Winnings:"; //--- ToDo: Localize; x = 0.355625 * safezoneW + safezoneX; y = 0.709 * safezoneH + safezoneY; w = 0.2475 * safezoneW; h = 0.055 * safezoneH; sizeEx = 3 * 0.03; }; class RscText_1003: life_RscText { idc = -1; text = "Betting"; //--- ToDo: Localize; x = 0.298906 * safezoneW + safezoneX; y = 0.577 * safezoneH + safezoneY; w = 0.0567187 * safezoneW; h = 0.033 * safezoneH; sizeEx = 2 * 0.03; }; class RscText_1002: life_RscText { idc = -1; text = "Slot Machine"; //--- ToDo: Localize; x = 0.298906 * safezoneW + safezoneX; y = 0.225 * safezoneH + safezoneY; w = 0.309375 * safezoneW; h = 0.055 * safezoneH; colorText[] = {0,0.49,0.92,1}; sizeEx = 3 * 0.03; }; }; class controls { class SLOT_1: life_RscPicture { idc = 5771; text = "textures\SlotMachine\slot_empty.paa"; x = 0.2955 * safezoneW + safezoneX; y = 0.313 * safezoneH + safezoneY; w = 0.122 * safezoneW; h = 0.198 * safezoneH; }; class SLOT_2: life_RscPicture { idc = 5772; text = "textures\SlotMachine\slot_empty.paa"; x = 0.4195 * safezoneW + safezoneX; y = 0.313 * safezoneH + safezoneY; w = 0.122 * safezoneW; h = 0.198 * safezoneH; }; class SLOT_3: life_RscPicture { idc = 5773; text = "textures\SlotMachine\slot_empty.paa"; x = 0.543 * safezoneW + safezoneX; y = 0.313 * safezoneH + safezoneY; w = 0.122 * safezoneW; h = 0.198 * safezoneH; }; class Winnings: Life_RscStructuredText { idc = 5775; test = ""; x = 0.469062 * safezoneW + safezoneX; y = 0.709 * safezoneH + safezoneY; w = 0.2 * safezoneW; h = 0.055 * safezoneH; }; class EXIT_BTN: life_RscButtonMenu { idc = -1; text = "$STR_Global_Close"; onButtonClick = "closeDialog 0;"; x = 0.649531 * safezoneW + safezoneX; y = 0.225 * safezoneH + safezoneY; w = 0.0567187 * safezoneW; h = 0.022 * safezoneH; colorBackground[] = {0,0,0,0}; }; class RscText_1005: Life_RscText { idc = -1; text = "5.000$"; //--- ToDo: Localize; x = 0.371094 * safezoneW + safezoneX; y = 0.577 * safezoneH + safezoneY; w = 0.061875 * safezoneW; h = 0.033 * safezoneH; colorText[] = {0,0.49,0.92,1}; sizeEx = 2 * 0.03; }; class RscText_1006: Life_RscText { idc = -1; text = "10.000$"; //--- ToDo: Localize; x = 0.448438 * safezoneW + safezoneX; y = 0.577 * safezoneH + safezoneY; w = 0.061875 * safezoneW; h = 0.033 * safezoneH; colorText[] = {0,0.49,0.92,1}; sizeEx = 2 * 0.03; }; class RscText_1007: Life_RscText { idc = -1; text = "25.000$"; //--- ToDo: Localize; x = 0.536094 * safezoneW + safezoneX; y = 0.577 * safezoneH + safezoneY; w = 0.061875 * safezoneW; h = 0.033 * safezoneH; colorText[] = {0,0.49,0.92,1}; sizeEx = 2 * 0.03; }; class RscText_1008: Life_RscText { idc = -1; text = "50.000$"; //--- ToDo: Localize; x = 0.62375 * safezoneW + safezoneX; y = 0.577 * safezoneH + safezoneY; w = 0.061875 * safezoneW; h = 0.033 * safezoneH; colorText[] = {0,0.49,0.92,1}; sizeEx = 2 * 0.03; }; class BET_5K: life_RscButtonMenu { idc = 5778; tooltip = "5000$"; //--- ToDo: Localize; colorBackground[] = {0,0,0,0}; onButtonClick = "[5000] spawn life_fnc_slotSpin;"; x = 0.371094 * safezoneW + safezoneX; y = 0.577 * safezoneH + safezoneY; w = 0.0515625 * safezoneW; h = 0.033 * safezoneH; colorBackgroundFocused[] = {0,0,0,0}; colorBackground2[] = {0,0,0,0}; color[] = {1,1,1,1}; colorFocused[] = {0,0,0,0}; color2[] = {0,0,0,0}; colorText[] = {1,1,1,1}; }; class BET_50K: life_RscButtonMenu { idc = 5779; tooltip = "50000$"; //--- ToDo: Localize; colorBackground[] = {0,0,0,0}; onButtonClick = "[50000] spawn life_fnc_slotSpin;"; x = 0.62375 * safezoneW + safezoneX; y = 0.577 * safezoneH + safezoneY; w = 0.061875 * safezoneW; h = 0.033 * safezoneH; colorBackgroundFocused[] = {0,0,0,0}; colorBackground2[] = {0,0,0,0}; color[] = {1,1,1,1}; colorFocused[] = {0,0,0,0}; color2[] = {0,0,0,0}; colorText[] = {1,1,1,1}; }; class BET_25K: life_RscButtonMenu { idc = 5781; tooltip = "25000$"; //--- ToDo: Localize; colorBackground[] = {0,0,0,0}; onButtonClick = "[25000] spawn life_fnc_slotSpin;"; x = 0.536094 * safezoneW + safezoneX; y = 0.577 * safezoneH + safezoneY; w = 0.061875 * safezoneW; h = 0.033 * safezoneH; colorBackgroundFocused[] = {0,0,0,0}; colorBackground2[] = {0,0,0,0}; color[] = {1,1,1,1}; colorFocused[] = {0,0,0,0}; color2[] = {0,0,0,0}; colorText[] = {1,1,1,1}; }; class BET_10K: life_RscButtonMenu { idc = 5782; tooltip = "10000$"; //--- ToDo: Localize; colorBackground[] = {0,0,0,0}; onButtonClick = "[10000] spawn life_fnc_slotSpin;"; x = 0.448438 * safezoneW + safezoneX; y = 0.577 * safezoneH + safezoneY; w = 0.061875 * safezoneW; h = 0.033 * safezoneH; colorBackgroundFocused[] = {0,0,0,0}; colorBackground2[] = {0,0,0,0}; color[] = {1,1,1,1}; colorFocused[] = {0,0,0,0}; color2[] = {0,0,0,0}; colorText[] = {1,1,1,1}; }; }; }; Now, let's define it in masterhandler.h inside the dialogs folder: #include "slot_machine.hpp" Now, go into eden editor, or however you wish to add this, it will call for the slot machine (let me know if it doesn't work, if not try removing a " on either side of Spin Slots Add this to an NPC, or preferably a infostand of your choice (off topic, but I also recommend switching the majority of your NPC's to infostands or some objects) this addAction ["Spin Slots", life_fnc_slotmachine]; Should be working, let me know if it's not Done.
  46. 4 points
    I highly recommend Maverick! Not just for their outstanding ArmA and Rust Services, but their support is second to none. They really care about their clients.
  47. 4 points
    Good luck with this new ad, i just hope your last attempted hasn't messed your chances up.
  48. 4 points
    Well hell, if Gooch says it's good it must be something worth checking out.
  49. 4 points
  50. 4 points
    Rules of the forums: 1. Rudeness and belittling language are not okay. Your tone should match the way you'd talk in person with someone you respect and whom you want to respect you. If you don't have time to say something politely, just leave it for someone who does. 2. Be welcoming, be patient, and assume good intentions. Don't expect new users to know all the rules — they don't. And be patient while they learn. If you're here for help, make it as easy as possible for others to help you. Everyone here is volunteering, and no one responds well to demands for help. 3. Don’t request scripts. This is not a place where we will provide any requested scripts, nor will we write any code for you. Altis Life RPG is a support community for developers and server owners. We cannot teach you to script for ArmA, but we will help you debug your own setup and code. 4. Don't be a jerk. These are just a few examples. If you see them, report them: a. Name-calling. Focus on the post, not the person. That includes terms that feel personal even when they're applied to posts (like "lazy", "ignorant", or "whiny"). b. Bigotry of any kind. Language likely to offend or alienate individuals or groups based on race, gender, sexual orientation, religion, etc. will not be tolerated. At all. (Those are just a few examples; when in doubt, just don't.) c. Inappropriate language or attention. Avoid vulgar terms and anything sexually suggestive. d. Harassment and bullying. If you see a hostile interaction, report it. If it keeps up, disengage — we'll handle it. If something needs staff attention, you can message any staff member. 5. Speak in English. Posts in a different language will be deleted, and topics will be closed. (Besides the designated sections) 6. No selling code or services. This is a place for volunteering your support. If you have a scripting company and want to advertize with us, please contact an admin for more information General rules: 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!