Leaderboard
Popular Content
Showing content with the highest reputation on 12/02/18 in all areas
-
In this video, I write the beginnings of an "AIO" Fighter script which can be extended in future videos. Feel free to use the source code for any purpose. Source code: import org.osbot.rs07.api.model.Item; import org.osbot.rs07.api.model.NPC; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import org.osbot.rs07.utility.ConditionalSleep; import java.util.Arrays; @ScriptManifest(name = "10MinFighter", version = 1.0, info = "", author = "", logo = "") public class Driver extends Script { String npcName; @Override public int onLoop() throws InterruptedException { // 1. decide which type of npcs to attack if (npcName == null) { if (myPlayer().getInteracting() != null) { npcName = myPlayer().getInteracting().getName(); } else { return 500; } } // 2. attack them if (!myPlayer().isAnimating() && myPlayer().getInteracting() == null) { NPC next = getNpcs().closest(npc -> npc.getName().equals(npcName) && npc.isAttackable() && !npc.isUnderAttack() && npc.getInteracting() == null); if (next != null) { next.interact("Attack"); new ConditionalSleep(5000) { @Override public boolean condition() throws InterruptedException { return myPlayer().getInteracting() != null; } }.sleep(); } } // 3. eat food so we don't die if (myPlayer().getHealthPercent() < 50) { Item food = getInventory().getItem(item -> Arrays.asList(item.getActions()).contains("Eat")); if (food != null) { food.interact("Eat"); sleep(2500); } } // 4. (optional) loot and bank return 500; } } Previous tutorial:9 points
-
NEW! Added Gemstone Crab! 81 Hours at Cows Brutal Black Dragon support Sulphur Nagua support Blue Dragon 99 ranged 99 Ranged at Gemstone Crab 81 Range F2p Safespotting Hill Giants Hotkey List // F1 = set cannon tile // F2 = hide paint // F3 = Set afk tile // F4 = reset afk tile // F6 = Set safespot tile // F7 = activate tile selector // F8 = Reset tile selector // F9 and F10 used by the client, EDIT: will re-assign as they are no longer used by client // F11 = Set breaks tile // F12 = Reset breaks tile User Interface Banking Tab Demo (handles everything with banking) You can copy inventory (to avoid adding individual items...), you can insert item names which have Auto-Fill (for you lazy folk!) and you can choose whether to block an item and avoid depositing it in bank, ideal for runes and ammo. Looting Tab Demo (From looting to alchemy, noted/stackable items too) You can choose whether to alch an item after looting it simply by enabling a checkbox, with a visual representation. All items are saved upon exiting the bot, for your convenience! Tasking Demo (Not to be confused with sequence mode, this is an individual task for leveling) You can set stop conditions, for example to stop the bot after looting a visage, you can have a leveling streak by changing attack styles and training all combat stats, you can have windows alert bubbles when an event occurs and an expansive layout for misc. options! Prayer Flick Demo (Just example, I made it faster after recording this GIF) There are two settings: Safe mode and efficient mode, this is safe mode: Fight Bounds Demo Allows you to setup the fight bounds easily! Simplified NPC chooser Either choose nearby (local) NPCs or enter an NPC name to find the nearest fight location! Simple interface, just click! Level Task Switch Demo (Switching to attack combat style after getting 5 defence) You can choose how often to keep levels together! e.g. switch styles every 3 levels Cannon Demo (Cannon is still experimental, beta mode!) Choose to kill npcs with a cannon, recharges at a random revolution after around 20-24 hits to make sure the cannon never goes empty too! Results Caged Ogres: How does this bot know where to find NPCs? This bot will find far-away npcs by simply typing the NPC name. All NPCs in the game, including their spawn points have been documented, the bot knows where they are. You can type 'Hill giant' while your account is in Lumbridge, and the bot will find it's way to the edgeville dungeon Hill giants area! Here is a visual representation of the spawn system in action (this is just a visual tool, map mode is not added due to it requiring too much CPU) Fight Area Example (How the bot searches for the npc 'Wolf') Walking System The script has 2 main walking options which have distinctive effects on the script. The walking system is basically a map with points and connections linking each point. It tells the script where to go, and decides the routes to take when walking to fightzones. Walking system 1 This uses a custom walking API written by myself and is constantly being updated as new fightzones are added. Pros: - Updates are instant, no waiting times - More fightzones are supported Cons: - Sometimes if an object is altered, the changes are not instant - Restarting the script too many times requires loading this webwalker each time which adds unnecessary memory (there is no way to make it only load at client startup since I don't control the client) Walking system 2 This is the default OSBot webwalking API - it is relatively new and very stable since the developers have built it, but is currently lacking certain fightzones (e.g. stronghold) and other high level requirement zones. It is perfect for normal walking (no object interactions or stairs, entrances etc) and never fails. Pros: - Stable, works perfect for normal walking - All scripters are giving code to improve the client webwalker - More efficient when restarting the script since it is loaded upon client start Cons: - No stronghold support yet - Some new/rare fightzones not supported yet - If there is a game-breaking update or an unsupported fightzone, it may take some time to add/repair (less than 24 hours usually) So which system should I choose? Whichever one suits your chosen fightzone best! There really shouldn't be any problems - the sole purpose of these options are for backup and emergency purposes, if the script ever messes up there is always the next option to select. Note: If the script ever fails, there will be immediate updates to fix the walking systems! Script Queue/Bot Manager: Script ID is 758, and the parameters will be the profile name that you saved in the fighter setup! Bug Report templates: New feature request - What is the new feature - Basic description of what the script should do - Basic actions for the script: 'Use item on item' etc. For when the script gets stuck on a tile (or continuous loop): - Which exact tile does the script get stuck on? (exact tile, not 'near the draynor village') - Plugin or normal script? - Did you try all 3 walking options? Script has a logic bug (e.g. dies while safespotting) or (cannon mode doesn't pickup arrows) - What is the bug - How did you make the bug happen - (optional) recommendation for the bug, e.g. 'make the script walk back' or something - Tried client restart? - Normal script or a plugin? - Which exact setup options are enabled? Afk mode, cannon mode, etc etc.3 points
-
Welcome to Evenflyox's AIO Services Hiring Thread! Skype: swordstash Discord: evenflyox#6378 (the E is lower case do NOT capitilize it) Before I start, I honestly believe in treating all my workers like humans and fairly, I've managed teams of over 100 people before and treated each of them with respect. That being said, as a worker for my services I will have expectations for you and should you not meet those expectations, then I will be forced to take action. The expectations are as follows: ALL services must be hand trained, you are welcome to use OSbuddy or Runelite. You must speak fluent English, I understand that it's not everyone's first language but at least try.Must be able to communicate correctly with all clients you are processing orders for.Must understand that any uncompleted work, you will not be paid for.Must understand to be patient with both customers and orders.Must be able to complete all orders of the specific type you are given. If you find that these expecations can be met by yourself, please apply using the following application : Which role are you applying for? :Which contract are you using? :What is your experience like? :Where do you live? :Forms of contact? (Skype/Discord) :How often do you play? :Do you agree to my terms? :Do you have any questions? : Worker Contract: - Deposit of 100M 07 GP.- Fully refundable upon wanting to leave after the first month. - If wanting to leave before the first month is over, the deposit is 75% refundable.- Must have no open orders in order to be refunded.- Must be able to provide OSbuddy/Runelite screenshots upon request.- Agree that you will work at a 85-15% profit.- Must give a 1 month notice to receive your refund.(you gain the 85%, get asked this many of times) As mentioned in the opening line, I will treat you with respect, respecting that we all have lives and that needs to be prioritized over a video game. I simply request that you understand how much time you need to put into each order in order to complete it in a timely manner to give a fair time estimate to our customers. This should be self-explanatory, but the more time you are willing to allocate to the services, the more orders you will be tasked with, which means the more money you will be making with me. Also the more accounts you are able to multi-task on, the same applies. I am looking for long-term workers here that will continue to stay with me and want to make more profit for months on end. However, you are welcome to leave at any time and I will respect that I hope you will take my services business seriously and will think about applying. If you are looking for a way to make money playing RS by helping out others in this community, then this is a great place to start off with and continue to grow. Hope to hear from y'all soon Terms of Service -- By posting an application, you understand my terms and agree to them by default.- You understand if you go away for a period of time without telling us, you will be automatically removed from the service.- You agree that my contracts are suitable for you, and you are fine to obey by them.- You understand that if you take out any private orders, you will be removed from the service.- You understand that all orders go through me, this is to avoid customer confusion and problems.- You understand you will be working with the minimum wealth to avoid hacks/scams on all orders.- You understand that any messing of accounts/items, you will be removed without a refund.- You understand that when applying for a spot (such as levelling) you will only be given that type.- You must have a profile & clean reputation across other forums along side OSbot.- You will not leak or outsource customers information or orders.- You will stay respectful and professional with all customers.- You will use Skype & discord for contact references.- You agree that I need to be part of your orders chat when processing it.- You confirm that you will tell me when customers are trying to order with you.- You agree that you will not snipe any orders, you will be removed if you do.- You agree that all payments are held by me unless informed otherwise. Credits to @Dbuffed for guidance, layout, and TOS on this forum Credits to @Services for advice on this forum Thanks guys2 points
-
2 points
-
────────────── PREMIUM SUITE ────────────── ─────────────── FREE / VIP+ ─────────────── ──────────────────────────────────────────────────────────── ⌠ Sand crabs - $4,99 | Rooftop Agility - $5,99 | AIO Smither - $4,99 | AIO Cooker - $3,99 | Unicow Killer - £3,99 | Chest Thiever - £2,99 | Rock crabs - $4,99 | Rune Sudoku - $9,99 ⌡ ⌠ AIO Herblore - FREE & OPEN-SOURCE | Auto Alcher - FREE | Den Cooker - FREE | Gilded Altar - FREE | AIO Miner - VIP+ ⌡ ──────────────────────────────────── What is a trial? A trial is a chance for you to give any of my scripts a test run. After following the instructions below, you will receive unrestricted access to the respective script for 24 hours starting when the trial is assigned. Your trial request will be processed when I log in. The trial lasts for 24 hours to cater for time zones, such that no matter when I start the trial, you should still get a chance to use the script. Rules: Only 1 trial per user per script. How to get a trial: 'Like' this thread AND the corresponding script thread using the button at the bottom right of the original post. Reply to this thread with the name of the script you would like a trial for. Your request will be processed as soon as I log in. If i'm taking a while, i'm probably asleep! Check back in the morning Once I process your request, you will have the script in your collection (just like any other SDN script) for 24 hours. Private scripts: Unfortunately I do not currently offer private scripts. ________________________________________ Thanks in advance and enjoy your trial! -Apaec.1 point
-
Want to buy with OSGP? Contact me on Discord! Detailed feature list: - Account builder mode to level your firemaking to level 50 or even higher. - Equips pyromancer gear option - Chopping and burning logs (base Option) - Relights brazier - Fletch option - Fix brazier option - Make potion and heal pyromancer when down option - Tons of food supported - Brazier swicthing when pyromancer is down - Advanced game settings to skip games, smart caluclate points, afk at certain points, ... - Bank or Open crates - Dragon axe special attack - Fletch at brazier option - Chop in safespot option - Worldhopping - CLI support for goldfarmers Custom Breakmanager: - Setup Bot and break times - Randomize your break times - Stop script on certain conditions (Stop on first break, Stop after X amount of minutes, Stop when skill level is reached) - Worldhopping - Crucial part to botting in 2023! Script queueing: - Support queueing multiple script in a row - All Khal scripts support flawless transitions in between scripts - Start creating your acc in a few clicks from scratch to multiple 99's - Flawless CLI support - Learn more here: How to use CLI parameters: - Example Usage: -script 909:ScriptFile.BreakFile.DiscordFile SAVEFILE = Saved Filename BREAKFILE = Breakmanager Filename - SAVEFILE: Save file can be created in the GUI. Navigate to the tab you want to run and press "Save As CLI file". Please choose your filename wisely (No special characters) - BREAKFILE (Optional): Breakfile can also be create in the GUI, set the breaksettings you wish to use and press "Save new CLI BreakFile". Please choose your filename wisely (No special characters) - Final form (Note that with some bot managers you do not need to specify -script 909): -script 909:TaskList1.4515breaks (With breaks) -script 909:TaskList1.4515breaks.discord1 (With breaks & discord) -script 909:TaskList1..discord1 (NO breaks & discord) Proggies:1 point
-
If you wish to get in contact with me, please use any of the following: My discord: Tony.#9649 Please ask for an Osbot PM to verify my identity if you are unsure. Worker: @leony @GodChild Please note there is a 10% fee for collecting items and ironman orders ~~Questing Prices~~ ~~Skilling/Powerleveling Prices~~ ~~Minigames/Quest Packages/Tut Services/Account Builds/Defenders~~ Terms of Service - You will provide everything needed for the service. When ordering with my service, you agree that you will remove all unneeded wealth. Upon failure to remove (unless given a valid reason) myself and my workers are not responsible for any "possible" loss of anything due to the nature of not knowing if you have removed it by default. You will pay upfront for your work, or a middleman will be used at your expense. I have the right to decline any orders. If I am unable to complete a service, you will be refunded for what is left. Any bans/mutes to the account(s) whilst doing services are not my responsibility. You will not log in whilst a service is being done, unless told you can. You will feedback upon completion of your order. Please note, OSbots TOS also comes into affect - Credit to @Dbuffedfor the TOS Credit to @Hope for the packages1 point
-
Sup peeps, gonna keep this short, will be posting progress on my new pure which I will attempt to max or gain very high stats. Will be making bank on my maxed main also fully botted. Doing vorkath gwd ect. Stats ATM 50 att 50 str 1 pray 60 range 70 mage Fully quested for 1 prayer, myth gloves done, mm done. Will be updating every so often, taking it slow with this to avoid any suspicion. Current melee setup Update #1 Update #2 Update #3 Update #4 Update #51 point
-
I am not sure if any of these have been activated yet but hopefully some are still active! I don’t have a Xbox to test!1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
Thanks I was able to make a fighter because of this1 point
-
1 point
-
i just run them in multiple virtual boxes currently. Planning on getting a vps once i get my hands on alot of residential proxies EDIT: the amount of VM's your pc can take depends on ram and cpu but my setup is intel i7-6700K cpu and 32gb of corsair dominator platinum ddr4 ram and i can run up 6 VM's without any problem at all and still play games such as assassins creed odyssey without any lag at all1 point
-
oh goodness now it'll be embedded into my head for a week again1 point
-
1 point
-
I use a VPS for botting Since I'm using a VPS: -I don't have to pay for electricity for it -I don't have to worry about stuff like power outages -I don't have to worry about how decent my internet is at the time -I don't have to spend a large initial investment So, it's up to you which you choose but I recommend using a VPS1 point
-
following this, i myself run 5 bots on my personal computer no issue. just curious if it would be worth it to get a VPS to run 20 bots at a time. Anyways, best of luck to you brudda !1 point
-
I run 7 on an intel i7 8700K whilst playing league of legends works fine for me.1 point
-
1 point
-
Hiring a VPS for a month would be cheaper than building a computer, (short term) depending on how profitable your botting is you may want to invest into a server build. I wouldn't like to run more than 2 clients, maybe 3 max on a laptop because long term it wouldn't be viable.1 point
-
1 point
-
after trying it for a fews times I think cuz it was AFK mode, when i uncheck that the bot work.1 point
-
1 point
-
Great script. Been going up to like 14 hours a day (stupid i know) but no ban. Only problem i would point out is when someone comes and stands on your spot its too quick to leave1 point
-
Great script! I like it a lot could add picking up ash - I read some where that you can sell in GE but you know what it does what it says on the tin! great great bot1 point
-
hi @Czar big fan you I have many scripts of yours . can i have trial for this one?1 point
-
Hmm, i never tested these. I'll have it added for you by the time script has updated. Youl know when its updated when version is 1.02 up the top left Edit: I have fixed it on my end, update is pending. Thanks for your patience1 point
-
1 point
-
ahh yes,thank you so much! and i apologize for not seeing that i should have looked at the forum harder1 point
-
I've been using this script for a while now, and I've never had a ban with it actually. This is honestly a really good script, The only issue I've ever had was a while ago when using tasks, it would sit idle, but that's since been fixed ( or at least doesn't happen anymore). Would highly recommend this script to anyone who's thinking about buying it.1 point
-
it seems to have issues starting the course when i was at canifis rooftops could u look into that? nothing happens once the course is completed edit : the exact log is [INFO][Bot #1][11/30 06:55:55 PM]: Traversing: [PlaneToAreaObstacle: PositionInteraction[Tall tree,Climb,[x=3505, y=3489, z=0]]] [INFO][Bot #1][11/30 06:55:56 PM]: Traversing: [PlaneToAreaObstacle: PositionInteraction[Tall tree,Climb,[x=3505, y=3489, z=0]]] [INFO][Bot #1][11/30 06:55:57 PM]: Traversing: [PlaneToAreaObstacle: PositionInteraction[Tall tree,Climb,[x=3505, y=3489, z=0]]] [INFO][Bot #1][11/30 06:55:58 PM]: Traversing: [PlaneToAreaObstacle: PositionInteraction[Tall tree,Climb,[x=3505, y=3489, z=0]]] [INFO][Bot #1][11/30 06:56:00 PM]: Traversing: [PlaneToAreaObstacle: PositionInteraction[Tall tree,Climb,[x=3505, y=3489, z=0]]] [INFO][Bot #1][11/30 06:56:01 PM]: Traversing: [PlaneToAreaObstacle: PositionInteraction[Tall tree,Climb,[x=3505, y=3489, z=0]]] [INFO][Bot #1][11/30 06:56:02 PM]: Traversing: [PlaneToAreaObstacle: PositionInteraction[Tall tree,Climb,[x=3505, y=3489, z=0]]]1 point
-
Who is The SimpleFisherman? Some say he's part man, part fish. Some say he's an actual real-life fisherman. All we really know is the man loves to fish. What the script does: Fishes Shrimp/Anchovies at Draynor Village until level 20 fishing, then fishes trout/salmon forever Fetches appropriate equipment from the bank if needed Walks to the appropriate fishing area depending on level Fish is dropped to optimise XP/Hour Future update plans: Buy feathers from GE when you run out Start going to fishing trawler at level 15 to get full angler (will take some time to implement!) Please note: This has not been tested on a low combat account - the dark wizard/jail guard near draynor WILL attack you if you have a low combat level so please use with caution! This is the first script that I will upload the source code for, any and all feedback will be greatly appreciated I have only started scripting recently so there may be some errors here and there. Download link: http://www.mediafire.com/file/0s3rq3q67e4363q/SimpleFisherman.jar Source code: import org.osbot.rs07.api.Skills; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.map.constants.Banks; import org.osbot.rs07.api.model.NPC; import org.osbot.rs07.api.ui.Skill; import org.osbot.rs07.api.util.ExperienceTracker; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import java.awt.*; import java.util.concurrent.TimeUnit; @ScriptManifest(author = "Tommm39", name = "SimpleFisherman", info = "", version = 1.0, logo = "") public class Main extends Script { private Skills s; private ExperienceTracker track; private String status = ""; private long timeBegan; private long timeRan; private final Area shrimpArea = new Area(3092, 3234, 3081, 3226); private final Area flyFishingArea = new Area(3102, 3422, 3109, 3434); private final Area lumbridgeBankArea = new Area(3208, 3218, 3209, 3219); public void onStart() { this.track = getExperienceTracker(); track.start(Skill.FISHING); this.s = getSkills(); this.timeBegan = System.currentTimeMillis(); } public void onExit() { } public int onLoop() throws InterruptedException { if (getInventory().isFull()) { drop(); } else if (!getInventory().contains("Small fishing net") && !getInventory().contains("Fly fishing rod")) { getFishingEquipment(); } else if ((s.getDynamic(Skill.FISHING) < 20) && (getInventory().contains("Small fishing net"))) { fishShrimp(); } else if ((s.getDynamic(Skill.FISHING) >= 20) && (getInventory().contains("Fly fishing rod"))) { flyFish(); } else if ((s.getDynamic(Skill.FISHING) < 20) && (!getInventory().contains("Small fishing net"))) { getFishingEquipment(); } else if ((s.getDynamic(Skill.FISHING) >= 20) && (!getInventory().contains("Fly fishing rod"))) { getFishingEquipment(); } return random(500, 550); } public void getFishingEquipment() throws InterruptedException { status = "Getting equipment"; Boolean lowLevelEquipment = false; if (s.getDynamic(Skill.FISHING) < 20) { lowLevelEquipment = true; } if (getWalking().webWalk(Banks.LUMBRIDGE_UPPER)) { Timing.waitCondition(() -> lumbridgeBankArea.contains(myPosition()), 5000); sleep(random(100, 500)); } if (getBank().open()) { if (getBank().depositAll()) { Timing.waitCondition(() -> getInventory().isEmpty(), 5000); } if (lowLevelEquipment == false) { if (getBank().withdraw("Fly fishing rod", 1)) ; Timing.waitCondition(() -> getInventory().contains("Fly fishing rod"), 5000); sleep(random(100, 500)); } else { if (getBank().withdraw("Small fishing net", 1)) ; Timing.waitCondition(() -> getInventory().contains("Fly fishing rod"), 5000); sleep(random(100, 500)); } } if (lowLevelEquipment == false) { if (getBank().withdrawAll("Feather")) { Timing.waitCondition(() -> getInventory().contains("Feather"), 5000); sleep(random(100, 500)); } } if (getBank().close()) { Timing.waitCondition(() -> !getBank().isOpen(), 5000); sleep(random(100, 500)); } } public void drop() throws InterruptedException { status = "Dropping inventory"; if (getInventory().dropAllExcept("Small fishing net", "Fly fishing rod", "Feather")) { Timing.waitCondition(() -> getInventory().onlyContains("Small fishing net", "Fly fishing rod", "Feather"), 5000); sleep(random(100, 500)); } } public void fishShrimp() throws InterruptedException { if (!shrimpArea.contains(myPosition())) { status = "Walking to shrimp area"; getWalking().webWalk(shrimpArea); Timing.waitCondition(() -> shrimpArea.contains(myPosition()), 5000); sleep(random(100, 500)); } else { NPC shrimpSpot = getNpcs().closest(1518); status = "Fishing shrimp"; if (myPlayer().getAnimation() == -1) { if (shrimpSpot != null) { if (shrimpSpot.interact()) { Timing.waitCondition(() -> shrimpSpot == null || getDialogues().isPendingContinuation(), 5000); sleep(random(100, 500)); } } } } } public void flyFish() throws InterruptedException { if (!flyFishingArea.contains(myPosition())) { status = "Walking to fly-fishing area"; getWalking().webWalk(flyFishingArea); Timing.waitCondition(() -> flyFishingArea.contains(myPosition()), 5000); sleep(random(100, 500)); } else { NPC flySpot = getNpcs().closest(1526); status = "Fishing trout/salmon"; if (myPlayer().getAnimation() == -1) { if (flySpot != null) { if (flySpot.interact("Lure")) { Timing.waitCondition(() -> flySpot == null || getDialogues().isPendingContinuation(), 5000); sleep(random(100, 500)); } } } } } public void onPaint(Graphics2D g) { Graphics2D gr = g; int fishingExperience = track.getGainedXPPerHour(Skill.FISHING); int levelsGained = track.getGainedLevels(Skill.FISHING); long timeToLevel = track.getTimeToLevel(Skill.FISHING); timeRan = System.currentTimeMillis() - this.timeBegan; g.setBackground(Color.WHITE); g.drawString("Thanks for using SimpleFisherman by Tommm39", 10, 230); g.drawString("Time Running: " + formatTime(timeRan), 10, 250); g.drawString("Fishing XP/HR: " + fishingExperience, 10, 270); g.drawString("Time to Level: " + formatTime(timeToLevel), 10, 290); g.drawString("Levels Gained: " + levelsGained, 10, 310); g.drawString("Status: " + status, 10, 330); } private String formatTime(long duration) { String formattedTime = ""; long days = TimeUnit.MILLISECONDS.toDays(duration); long hours = TimeUnit.MILLISECONDS.toHours(duration) - TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(duration)); long minutes = TimeUnit.MILLISECONDS.toMinutes(duration) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(duration)); long seconds = TimeUnit.MILLISECONDS.toSeconds(duration) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration)); if (days == 0) { formattedTime = (hours + ":" + minutes + ":" + seconds); } else { formattedTime = (days + ":" + hours + ":" + minutes + ":" + seconds); } return formattedTime; } }1 point