dagod Posted February 13, 2023 Share Posted February 13, 2023 So i am new to coding in osbot and i have been writing scripts for the last 2 month or so. Now i am trying to stop a method on a condition. So for example: bot will do woodcutter(), and if someone comes close to the bot i want to stop the woodcutter() and hop world. How could i do this? Thanks in advance. Quote Link to comment Share on other sites More sharing options...
Khaleesi Posted February 13, 2023 Share Posted February 13, 2023 1 hour ago, dagod said: So i am new to coding in osbot and i have been writing scripts for the last 2 month or so. Now i am trying to stop a method on a condition. So for example: bot will do woodcutter(), and if someone comes close to the bot i want to stop the woodcutter() and hop world. How could i do this? Thanks in advance. You can use the getPlayers() to get players near you. Add some filter to your likings to get the right players ^^ You character is also a player btw, so you will always load yourself in there 1 Quote Link to comment Share on other sites More sharing options...
Gunman Posted February 13, 2023 Share Posted February 13, 2023 You can do this many ways, just depends on how you want to do it. Probably be easiest for you to make a condition to check in your conditional sleep and then if it's true do whatever action 1 Quote Link to comment Share on other sites More sharing options...
dagod Posted February 13, 2023 Author Share Posted February 13, 2023 (edited) 4 hours ago, Khaleesi said: You can use the getPlayers() to get players near you. Add some filter to your likings to get the right players ^^ You character is also a player btw, so you will always load yourself in there I guess i didnt explain the issue well. Yes i do know what is the condition i need to use, but the thing i couldnt do is how do i stop the action that the bot is currently doing. 2 hours ago, Gunman said: You can do this many ways, just depends on how you want to do it. Probably be easiest for you to make a condition to check in your conditional sleep and then if it's true do whatever action What if the other player comes close when the bot is not sleeping? Like how do i make a conditional action which is like the conditional sleep but does the action until the condition is met? Edited February 13, 2023 by dagod Quote Link to comment Share on other sites More sharing options...
Gunman Posted February 14, 2023 Share Posted February 14, 2023 46 minutes ago, dagod said: What if the other player comes close when the bot is not sleeping? Like how do i make a conditional action which is like the conditional sleep but does the action until the condition is met? You could make an event, background thread, etc Quote Link to comment Share on other sites More sharing options...
Khaleesi Posted February 14, 2023 Share Posted February 14, 2023 (edited) 6 hours ago, dagod said: I guess i didnt explain the issue well. Yes i do know what is the condition i need to use, but the thing i couldnt do is how do i stop the action that the bot is currently doing. What if the other player comes close when the bot is not sleeping? Like how do i make a conditional action which is like the conditional sleep but does the action until the condition is met? You don't have too? if you are having issues with that your script logic is probably not correct. You have an onLoop that loops all the time, if you have a check in there you have everything you need. If you are using events, you can just check for it in the event and call setFinished(); Feel free to share some code ^^ Easier to tell what you are trying to do Edited February 14, 2023 by Khaleesi Quote Link to comment Share on other sites More sharing options...
Alakazizam Posted February 14, 2023 Share Posted February 14, 2023 This is pretty much what I do if I need to avoid people. It first checks to make sure no one but me is around, if so it does my task, otherwise it hops worlds. This HopRandomWorld() function will check if you are in F2P or P2P and hop to a random world accordingly, you can edit the world lists as you please. @Override public int onLoop() throws InterruptedException { if (getPlayers().getAll().size() == 1) { if (!myPlayer().isAnimating() && !myPlayer().isMoving()) { //MAIN PART OF YOUR CODE GOES HERE } } else { HopRandomWorld(); } return 602; } void HopRandomWorld() { int P2PWorlds[] = {303, 304, 305, 306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 336, 337, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 350, 351, 352, 354, 355, 356, 357, 358, 359, 360, 362, 367, 368, 370, 374, 375, 376, 377, 378, 386, 387, 388, 389, 390, 395, 421, 422, 424, 443, 444, 445, 446, 463, 464, 465, 466, 477, 478, 480, 481, 482, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 531, 532, 534, 535}; int F2PWorlds[] = {308, 316, 335, 371, 382, 383, 384, 394, 397, 398, 399, 417, 418, 430, 431, 433, 434, 435, 436, 437, 451, 452, 453, 454, 455, 456, 470, 471, 475, 476, 483, 497, 498, 499, 500, 501, 537, 542, 543, 544, 545, 546, 547, 552, 553, 554, 556, 557, 562, 563, 571, 575}; if (getWorlds().isMembersWorld()) { int TargetIndex = random(0, P2PWorlds.length - 1); if (P2PWorlds[TargetIndex] != getWorlds().getCurrentWorld()) { getWorlds().hop(P2PWorlds[TargetIndex]); } else { HopRandomWorld(); } } else { int TargetIndex = random(0, F2PWorlds.length - 1); if (F2PWorlds[TargetIndex] != getWorlds().getCurrentWorld()) { getWorlds().hop(F2PWorlds[TargetIndex]); } else { HopRandomWorld(); } } } You can do a conditional sleep after you do whatever it is you're doing that requires you to sleep. This will stop sleeping when the condition is met or if another player is in ~minimap range. new ConditionalSleep(10000) { @Override public boolean condition() {return /**Your main condition**/ || getPlayers().getAll().size() > 1;} }.sleep(); Quote Link to comment Share on other sites More sharing options...