i need a script that collects WHILE pet is out, and sells too for PBDO
using System;
using System.Collections.Generic;
using System.Linq;
using PBDOBot.Helper;
using PBDOBot.Api;
/*
__________ .__ .__ .___.__ ___.
\______ \_____ | | | | _____ __| _/|__|__ __ _____ \_ |__ ___.__.
| ___/\__ \ | | | | \__ \ / __ | | | | \/ \ | __ < | |
| | / __ \| |_| |__/ __ \_/ /_/ | | | | / Y Y \ | \_\ \___ |
|____| (____ /____/____(____ /\____ | |__|____/|__|_| / |___ / ____|
\/ \/ \/ \/ \/\/
__ __ __________ __ __
\ \ \ \ |__\______ \ / / / /
\ \ \ \ | || | \ / / / /
/ / / / | || ` \ \ \ \ \
/_/ /_/ /\__| /_______ / \_\ \_\
\______| \/
____ ____
___ __ ___________ /_ | /_ |
\ \/ _/ __ \_ __ \ | | | |
\ /\ ___/| | \/ | | | |
\_/ \___ |__| |___| /\ |___|
\/ \/
*/
namespace PBDOBot.Api.Task
{
public class Task : BBaseTask
{
#region Task Configuration
/* You really should only need to change shiz here! */
bool UseHangarChange = false;
bool UseAmmoChanger = false;
bool UseShipAbilities = false;
bool UseTechCenter = false;
bool UseRocketBuyCPU = false;
bool UseRocketLauncher = false;
bool CloakOnSell = true;
public int CollectionHangar = 1;
public int SellHangar = 2;
public int RocketBuyConfig = 1;
public int HellstormBuyConfig = 2;
bool BoostLasersWithPromerium = true;
bool BoostRocketsWithSeprom = true;
bool BoostEnginesWithPromerium = true;
bool BoostShieldsWithSeprom = true;
public Enums.LaserAmmoType LaserAmmo = Enums.LaserAmmoType.LCB_10;
public Enums.RocketAmmoType RocketAmmo = Enums.RocketAmmoType.PLT_2026;
public Enums.RocketLauncherAmmoType RocketLauncherAmmo = Enums.RocketLauncherAmmoType.ECO10;
#endregion
#region ITaskScripts
/* ITaskScript Zone */
class IHangarChange : ITaskScript
{
public IHangarChange()
: base("HangarChange", 15000, 10)
{
}
public override int Run()
{
int hangarCollect = ((Task)Task).CollectionHangar;
int hangarSell = ((Task)Task).SellHangar;
int timer = Task.BMain.Me.Premium ? 5 : 20;
int cargo = Task.BMain.Me.FreeCargo - Task.MinFreeSlots;
// Fly to safety in 5-3
if (cargo <= 0 && Task.BMain.MapName == "5-3" && !Task.BMain.Me.InNoAttackZone && Task.BMain.LoggedIn)
{
Task.IdleInSafety = true;
Task.BMain.WriteLog("Flying to safety to change hangar");
}
// Logout when in safety
else if (cargo <= 0 && Task.BMain.MapName == "5-3" && Task.BMain.Me.InNoAttackZone && Task.BMain.LoggedIn)
{
Task.BMain.Actions.LogOff(180 + timer);
Task.BMain.WriteLog("Logging out to switch hangar");
}
// Trigger Selling in 5-3
else if (cargo <= 0 && Task.BMain.MapName == "5-2" && Task.BMain.LoggedIn)
{
Task.SellPalladium = true;
Task.Sell = true;
Task.BMain.WriteLog("Selling Palladium");
return 1500;
}
// Logout when sold
else if (cargo > 0 && Task.BMain.MapName == "5-2" && Task.BMain.Equip.Ship.CurrentHangar != hangarCollect && Task.BMain.Me.InNoAttackZone && Task.BMain.LoggedIn)
{
Task.IdleInSafety = true;
Task.BMain.Actions.LogOff(180 + timer);
Task.BMain.WriteLog("Logging out to switch hangar");
}
// Flee to safety to logout after selling
else if (cargo > 0 && Task.BMain.MapName == "5-2" && Task.BMain.Equip.Ship.CurrentHangar != hangarCollect && !Task.BMain.Me.InNoAttackZone && Task.BMain.LoggedIn)
{
Task.IdleInSafety = true;
Task.BMain.WriteLog("Flying to safety to change hangar");
}
// Login to selling hangar
if (!Task.BMain.LoggedIn && Task.BMain.MapName == "5-3")
{
Task.BMain.Equip.Ship.ChangeHangars(hangarSell);
Task.BMain.Actions.LogOn();
Task.BMain.WriteLog("Switching to chosen sell hangar");
}
// Login to collection hangar
else if (!Task.BMain.LoggedIn && Task.BMain.MapName == "5-2")
{
Task.BMain.Equip.Ship.ChangeHangars(hangarCollect);
Task.BMain.Actions.LogOn();
Task.BMain.WriteLog("Switching to chosen collect hangar");
}
return -1;
}
public override bool NeedRun()
{
return Task.BMain.EquipmentLoaded;
}
}
class IShootPeepz : ITaskScript
{
public IShootPeepz()
: base("AmmoChanger", 2000, 8)
{
}
public override int Run()
{
if (Task.BMain.Me.SelectedShip.IsNpc)
{
if (Task.BMain.Me.SelectedShip.Shield > 0) { Task.BMain.Actions.SetDroneFormation(Enums.DroneFormation.Crab); } else { Task.BMain.Actions.SetDroneFormation(Enums.DroneFormation.Diamond); }
if (Task.BMain.Me.SelectedShip.Shield > 0) { Task.BMain.Me.SetLaserAmmo(Enums.LaserAmmoType.SAB); } else { Task.BMain.Me.SetLaserAmmo(((Task)Task).LaserAmmo); }
}
else
{
if (Task.BMain.Me.GetAmmoCount(Enums.LaserAmmoType.RSB_75) >= 1000 && Task.BMain.Me.GetAmmoCount(Enums.LaserAmmoType.UCB_100) >= 1000)
{
if (Task.LaserAmmoType != Enums.LaserAmmoType.RSB_75)
{
Task.BMain.Me.SetLaserAmmo(Enums.LaserAmmoType.RSB_75);
return 500;
}
if (Task.LaserAmmoType != Enums.LaserAmmoType.UCB_100)
{
Task.BMain.Me.SetLaserAmmo(Enums.LaserAmmoType.UCB_100);
return 3000;
}
}
if (Task.BMain.Actions.CanUseInstaShield && Task.BMain.Me.Hitpoints <= 50000) Task.BMain.Actions.UseInstaShield();
if (Task.BMain.Actions.CanUseEmp && Task.BMain.Me.Hitpoints <= 30000) Task.BMain.Actions.UseEmp();
if (Task.BMain.Me.Shield <= Task.BMain.Me.MaxShield * 0.1 && Task.BMain.Actions.CanUseTech(Enums.TechType.ShieldBackup)) Task.BMain.Actions.UseTech(Enums.TechType.ShieldBackup);
}
return -1;
}
public override bool NeedRun()
{
return Task.BMain.Me.SelectedShip != null;
}
}
class ISurvive : ITaskScript
{
public ISurvive()
: base("ShipAbilities", 5000, 9)
{
}
public override int Run()
{
if (Task.BMain.Actions.CanUseAbility(Enums.ShipAbility.Aegis_Shield_Repair) && (Task.BMain.Me.Shield / (double)Task.BMain.Me.MaxShield) * 100 <= 70)
{
Task.BMain.Actions.UseAbility(Enums.ShipAbility.Aegis_Shield_Repair);
}
if (Task.BMain.Actions.CanUseAbility(Enums.ShipAbility.Aegis_Health_Repair) && Task.BMain.Me.Hitpoints <= (Task.BMain.Me.MaxHitpoints - 100000))
{
Task.BMain.Actions.UseAbility(Enums.ShipAbility.Aegis_Health_Repair);
}
if (Task.BMain.Actions.CanUseAbility(Enums.ShipAbility.Aegis_Health_Pod) && Task.BMain.Me.Hitpoints <= 100000)
{
Task.BMain.Actions.UseAbility(Enums.ShipAbility.Aegis_Health_Pod);
}
return -1;
}
public override bool NeedRun()
{
return (Task.BMain.Actions.CanUseAbility(Enums.ShipAbility.Aegis_Shield_Repair) || Task.BMain.Actions.CanUseAbility(Enums.ShipAbility.Aegis_Health_Repair) || Task.BMain.Actions.CanUseAbility(Enums.ShipAbility.Aegis_Health_Pod));
}
}
class ICanHazRocketz : ITaskScript
{
public ICanHazRocketz()
: base("RocketBuyCPU", 2000, 7)
{
}
public override int Run()
{
int RocketCount = Task.BMain.Me.GetAmmoCount(((Task)Task).RocketAmmo);
if (RocketCount < 10)
{
Task.StandardConfiguration = ((Task)Task).RocketBuyConfig;
Task.SwitchConfigWhenShieldLow = false;
return 5000; // Config Change Cooldown
}
else
{
Task.StandardConfiguration = ((Task)Task).HellstormBuyConfig;
Task.SwitchConfigWhenShieldLow = true;
}
if (RocketCount > 300)
return 120000; // I doubt we will use 300 rockets in less than 2 mins. This gives the CPU back some processing time!
return -1;
}
public override bool NeedRun()
{
return true;
}
}
class IHazSuperPowerz : ITaskScript
{
public IHazSuperPowerz()
: base("TechCenter", 1000, 6)
{
}
public override int Run()
{
Task.BMain.Actions.UseTech(Enums.TechType.RocketPrecision);
return 1200000; // Precision Targeter Duration and Cooldown
}
public override bool NeedRun()
{
return Task.BMain.Actions.CanUseTech(Enums.TechType.RocketPrecision) && Task.BMain.Actions.GetTechAmount(Enums.TechType.RocketPrecision) > 10;
}
}
#endregion
public override void OnReset()
{
this.BoostDictionary = new Dictionary<string, Enums.ResourceType> {
{ "Lasers", Enums.ResourceType.ore_promerium },
{ "Rockets", Enums.ResourceType.ore_seprom },
{ "Speed", Enums.ResourceType.ore_promerium },
{ "Shield", Enums.ResourceType.ore_seprom }
};
this.TaskScripts.Clear();
if (UseHangarChange)
this.TaskScripts.Add(new IHangarChange()); // Hangar Change
if (UseAmmoChanger)
this.TaskScripts.Add(new IShootPeepz()); // Ammo Changer
if (UseShipAbilities)
this.TaskScripts.Add(new ISurvive()); // Ship Abilities
if (UseRocketBuyCPU)
this.TaskScripts.Add(new ICanHazRocketz()); // Auto Rocket Buy
if (UseTechCenter)
this.TaskScripts.Add(new IHazSuperPowerz()); // Tech Center
}
public override void ChooseLogic()
{
if (!ActionList.Contains("Palladium Pro"))
{
BMain.WriteLog("Palladium Pro");
BMain.WriteLog("\u00A9 Made by -jD- with special thanks to ukjet");
Restock = false;
UseRocketLauncher = UseRocketLauncher;
LaserAmmoType = LaserAmmo;
RocketAmmoType = RocketAmmo;
RocketLauncherAmmoType = RocketLauncherAmmo;
AvoidNpcsRange = 3500;
CollectResources = true;
ExtremeBotting = false;
CollectBonusBoxes = false;
CollectCargoBoxes = false;
SwitchConfigWhenShieldLow = true;
SwitchConfigShieldPercent = 10;
AnswerAttacks = true;
FleeOnEnemyInRadius = false;
TaskMap = "5-3";
AttackNpcs = true;
DroneFormation = Enums.DroneFormation.Diamond;
if (BMain.MapName != "5-3") { UsePet = false; } else { UsePet = true; }
/* Confusing cloak logic FTW! :D */
if (!BMain.MapName.Contains("5-"))
if(BMain.MapName.Contains("-8"))
Cloak = false;
else if (CloakOnSell)
Cloak = true;
else
if (!UseHangarChange && CloakOnSell)
if (BMain.MapName != "5-3") { Cloak = true; } else { Cloak = false; }
PetMode = Enums.PetMode.Auto_Resource_Collector;
RestockPetFuel = true;
PetFuelMinAmount = 1000;
PetMinDurability = 1;
RepairPetWhenDead = true;
Repair = true;
MinDurability = 40;
MaxDurability = 100;
Refine = false;
if (UseHangarChange)
{
if (BMain.MapName == "5-3")
{
Sell = false;
SellPalladium = false;
SellSkylabPromerium = false;
}
else
{
Sell = true;
SellPalladium = true;
SellSkylabPromerium = true;
}
}
else
{
Sell = true;
SellPalladium = true;
SellSkylabPromerium = true;
}
MinFreeSlots = 0;
MinPalladiumAmountToSell = 15;
ActionList.Add("Palladium Pro");
}
}
}
}