Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TUT] Piszemy własnego TASKa do PBDO-BOTa !


muszekphelka23

Rekomendowane odpowiedzi

Opublikowano

To mój pierwszy tutek, więc proszę o wyrozumiałość

 

Większość osób korzystających z PBDO-BOTa używa gotowych TASKów z oficjalnego forum.

W tym tutku opiszę co i jak napisać, by nasz task był "taki, jak chcemy"

 

No to zaczynamy od piwka...

... i jedziemy

 

W folderze PBDO-BOTa znajduje się program przydatny do edycji TASKów Notepad++.

Można go znaleźć w folderze o nazwie "npp". To taki zaawansowany notatnik / edytor.

Dzięki niemu wszystko będzie wyglądało przejrzyście

 

Ok no to pora na kolejny łyk piwka... i jedziemy dalej.

 

TASK - z ang. praca lub "zadana praca" oznacza listę rzeczy do wykonania przez bota.

w nim podajemy odpowiednie komendy sterujące zachowaniem bota.

Wszystkie te taski zapisane są z rozszerzeniem .cs (skrypt)

np. moj_task_na_boxy.cs

 

 

Budowa Skryptu / Tasku

 

Każdy task zaczyna się od deklaracji using i przestrzeni nazw,

oczywiście nie musiscie wiedzieć do czego służą, bo to nie miejsce i czas na to

using System.Threading;
using System.Collections.Generic;
using PBDOBot.Helper;
using PBDOBot.Api;
using PBDOBot.Api.Task;

namespace Tasks

 

 

Dalej jest klasa public, która zawierać będzie całość potrzebnych komend, zawartych pomiędzy klamrami {}

public class Task : BBaseTask
{
}

 

 

Potem mamy public override void OnReset(),

dzięki niej po każdym zalogowaniu, restarcie, przelogowaniu konta w grze, następują wymienione funkcje.

Np. po restarcie itp funkcja podkręci nam wybrany napędy złotkiem w ilości 100

public override void OnReset()
{

  #region Zakaz Sprzedawania Wybranych Surowcow
		Enums.ResourceType[] protectedCollection = new Enums.ResourceType[]
  {
Enums.ResourceType.ore_promerium // ochrona tylko zlotka
  };
		this.ProtectResourcesList.AddRange(protectedCollection);
  #endregion

  #region Podkrecenie Napedow, Rakiet, Laserkow lub Oslon
  //MinBoostAmountLasers = 100;  // ile w laserki
  //MinBoostAmountRockets = 100; // ile w rakiety
  MinBoostAmountSpeed = 100;  // ile w napedy
  //MinBoostAmountShield = 100;  // ile w oslone

  Dictionary<string, Enums.ResourceType> boostCollection = new Dictionary<string, Enums.ResourceType>();

  //boostCollection.Add("Lasers", Enums.ResourceType.ore_promerium);
  //boostCollection.Add("Rockets", Enums.ResourceType.ore_promerium );
  boostCollection.Add("Speed", Enums.ResourceType.ore_promerium);
  //boostCollection.Add("Shield", Enums.ResourceType.ore_promerium);  //  co ma podkrecac
  this.BoostDictionary = boostCollection;
  #endregion
}

 

komendy #region nazwa(poczatek) i #endregion(koniec) to takie zakładki dla nas, żebyśmy się nie pogubili co do czego

#region jakas nazwa
#endregion

 

Teraz przechodzimy do najważniejszej części skryptu public override void ChooseLogic()

tutaj będziemy podawać wszystkie polecenia jakie ma wykonać bot.

public override void ChooseLogic()
{
Dictionary<TaskLoadDelegate, int> TaskLoadDictionary = new Dictionary<TaskLoadDelegate, int>();


 TaskLoadDictionary.Add(
 delegate()
 {
  if (!ActionList.Contains("Latam na x-8"))
  {

   // tutaj polecenia  CZYLI TA CALA LISTA PODANA NIZEJ !!! oczywiscie nie trzeba wszystkich tu wbijac

  ActionList.Add("Latam na x-8");
  }
  }, 43); // czas w minutach ile ma latac na danej mapce

CycleTaskDictionary = TaskLoadDictionary;
}

 

Dobra tu to się należy już kilka łyków piwka...

 

 

Tutaj podam Wam listę poleceń najczęściej używanych

 

Reset();

BMain.WriteLog("No To Boce na x-6");// jakis tekst do dziennicza logow

TaskMap = "x-6";// na jakiej mapie ma latac np x-6, x-1, firma nie ma znaczenia

#region Ogolne
StandardConfiguration = 1; // konfa na ktorej ma latac
UseExtraGateEnergy = false; // czy ma klikac w kociolku
BuyInvisibleAddon = false; // czy ma kupowac lub uzywac paczki niewidki
#endregion

#region WROTA
DoGalaxyGateAlpha = false;
DoGalaxyGateBeta = false;
DoGalaxyGateGamma = false;	 // jakie wrota ma robic
DoGalaxyGateDelta = false;	  // w przypadku tasku na wrota
DoGalaxyGateEpsilon = false;
DoGalaxyGateZeta = false;
#endregion

#region Bicie Alienkow
AttackNpcs = true;  // czy ma bic alienki
AttackBossNpcs = false;   // czy ma bic bossy
AttackTaggedNpcs = false;  // czy ma boc zaznaczone przez kogos innego alienki, zawsze na false ma byc
AvoidNpcsList.AddRange(new string[] { "--==ALiEN==--", "--==ADMiN==--" }); // jakie alieny/statki ma omijac
AvoidNpcsRange = 7000;  // odleglosc na jaka ma odleciec
HuntNpcsList.AddRange(new string[] { "..::{ Kristallin }::.." }); // wybrane alienki jakie ma bic
#endregion

#region Amunicja
Restock = false; // jesli false to CPU na statku bedzie kupowalo amunicje, jeslu true, to mozna CPU wyciagnac 
LaserAmmoType = Enums.LaserAmmoType.LCB_10; // z jakiego ammo stzrelac LCB_10, MCB_25, MCB_50, UCB_100, SAB, RSB_75
LaserAmmoMinCount = 100; // minimum ammo zeby kupic
LaserAmmoBuyMaxCount = 10000; // max ammo ile kupi
RocketAmmoType = Enums.RocketAmmoType.PLT_2026; // z jakich rakiet ma strzelac R310, PLT_2026, PLT_2021, PLT_3030, PLD_8, WIZ, DCR_250
RocketAmmoMinCount = 50; // min rakiet by kupic
RocketAmmoBuyMaxCount = 500; // max rakiet do kupienia
UseRocketLauncher = true; // czy uzywac wyrzutni rakiet
RocketLauncherAmmoType = Enums.RocketLauncherAmmoType.ECO10; // z jakich rakiet strzelac HSTRM01, UBR100, ECO10
#endregion

#region Zbieranie Boxow
CollectBonusBoxes = true;
CollectSunBoxes = true;
CollectSpecialBoxes = true;
CollectResources = false;		// zbieranie tak czy nie
CollectCargoBoxes = false;	// wiadomo, zbieranie boxow itp
CollectPirateBoxes = false;
BootyKeyBuyCount = 0; // czy kupowac klucze? 0 = nie, 1,2,3,4.. = ile kluczy ?
ActivateBoxMemory = true;  // czy ma zapamietac gdzie lezaly boxy
BoxMemoryRadius = 5000;  // na jaka odleglosc ma pamietac boxy
#endregion

#region Ucieczka
FleeOnEnemyInRadius = true; // uciekac gdy wrog blisko ?
FleeOnClanWarEnemyInRadius = true;  // uciekac gdy wrog z klanu wojny blisko ?
FleeOnAttacked = true; // uciekac gdy nas bija ?
SwitchConfigWhileFleeing = true; // zmienic konfe podczas ucieczki ?
FleeRadius = 7000; // jak daleko odleciec ?
SwitchConfigWhenShieldLow = true;  // zmienic konfe gdy malo oslon ?
SwitchConfigShieldPercent = 10; // zmienic konfe gdy ponizej 10% ? 1-100%
#endregion

#region Naprawa/Sprzedaz
Repair = true;   // naprawa statku, klepanie robotem
MinDurability = 50; // minimum hp by zaczal sie klepac w %
MaxDurability = 100; // max do wyklepania w %
Sell = false; // czy sprzedac surki na bazie ?
MinFreeSlots = 10; // ile zostawic wolnego miejsca w ladowni ?
#endregion

#region PET
UsePet = false; // uzywanie peta - true wlaczony
DeactivatePetWhileFleeing = false;  // wylacz peta gdy ucieka
RepairPetWhenDead = false; // naprawiaj peta po dedzie
PetMinDurability = 2; // w % minimum hp peta do wyklepania
PetMaxDurability = 10;// w %  max ile ma klepac peta, do ilu hp
RestockPetFuel = false;// czy kupowac paliwo do peta ?
PetFuelMinAmount = 500; // minimum paliwa by kupic
PetFuelMaxAmount = 5000;// ile kupic paliwa ?
PetMode = Enums.PetMode.Passive_Mode;// tryb peta z jakim ma latac

/Enums.PetMode.Passive_Mode  // tryb pasywny - tylko lata
//Enums.PetMode.Guard_Mode   // tryb obronny - bicie
//Enums.PetMode.Auto_Looter   // zbieracz boxow (dzieki Piotrek567 
//Enums.PetMode.Auto_Resource_Collector	// zbieracz surowcow
//Enums.PetMode.Enemy_Locator     // lokator wrogow
//Enums.PetMode.Resource_Locator	 // lokator surowcow
//Enums.PetMode.Cargo_Trader	 // handlowy
//Enums.PetMode.PET_Repair	 // naprawczy
//Enums.PetMode.Kamikaze_Detonator	// KAMIKAZE 
#endregion[/color]

 

 

Są polecenia jeszcze co do wrót, które umieszczamy w public override void OnReset()

GGWaveConfigList.Add(new GGWaveConfig("-=[ Streuner ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,1, false));
GGWaveConfigList.Add(new GGWaveConfig("-=[ Lordakia ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,1, false));
GGWaveConfigList.Add(new GGWaveConfig("-=[ Mordon ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,1, false));
GGWaveConfigList.Add(new GGWaveConfig("-=[ Saimon ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,1, false));
GGWaveConfigList.Add(new GGWaveConfig("-=[ Devolarium ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,1, false));
GGWaveConfigList.Add(new GGWaveConfig("-=[ Kristallin ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,1, false));
GGWaveConfigList.Add(new GGWaveConfig("-=[ Sibelon ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,1, false));
GGWaveConfigList.Add(new GGWaveConfig("-=[ Sibelonit ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,1, false));
GGWaveConfigList.Add(new GGWaveConfig("-=[ Kristallon ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,1, false));
GGWaveConfigList.Add(new GGWaveConfig("-=[ Protegit ]=-", Enums.LaserAmmoType.LCB_10,Enums.RocketAmmoType.PLT_2026,2, false));
LogoutAfterGG = true;	// przeloguje po wyskoczeniu z wrót

 

czyli lista poszczególnych fal we wrotach

od lewej:

 

GGWaveConfigList.Add(new GGWaveConfig // poczatek polecenia

("-=[ Streuner ]=-", // jakie alieny ma bic w dane fali

Enums.LaserAmmoType.LCB_10, // jaki typ amunicji laserowej

Enums.RocketAmmoType.PLT_2026, // jakie rakietki

1, // czyli z której konfy ma bić alienki 1 czy 2

false)); // false = ze nie ma wyskakiwac z wrot i robic dalej,

// true = ma zakonczyc na tej fali i leciec np. bocić

 

 

#Edit

W niektórych polach użyłem // by wypisać wszystkie polecenia, tak jest w przypadku trybów PETa

 

 

 

Zapodam jeszcze Wam moje taski (moje tzn. edytowane przeze mnie )

http://www.speedyshare.com/file/JAXma/3-taski.rar

 

skan

http://www.virustotal.com/url-scan/report.html?id=f827f9ec00ebf5eac3b6766d0418e754-1323699043

Opublikowano

Dość dobrze opisane. Masz lajka.

Kolorki nie działają w

W [code] z ulepszaniem laserów i innych przed niektórymi funkcjami dodałeś "//" a wiadomo że wtedy dana funkcja nie zadziała.

Opublikowano

Dość dobrze opisane. Masz lajka.

Kolorki nie działają w

W [code] z ulepszaniem laserów i innych przed niektórymi funkcjami dodałeś "//" a wiadomo że wtedy dana funkcja nie zadziała.

 

Napisał funkcje w komentarzach ponieważ jak wiadomo nie może chodzić PET na kilku trybach jednocześnie co by pewnie wywaliło błąd.

Przedstawiał kod niczym z taska, więc musiał tamte zkomentować(zostawić jeden).

 

Tutorial dobry, zwłaszcza jak na pierwszy. Opisałeś najistotniejsze funkcje + te dodatkowe, rzadziej używane.

+ :)

Opublikowano

Tego właśnie potrzebowałem :) like, ofkorse

//Spam. Warn, ofkorse

Sekhmed, wiemy że masz mega podnietę z moda ale wyluzuj trochę

comment_aKm2b5jSiJgvkhmrlSzZ5Yc80OK7Mzta

Opublikowano

dzieki temu textowi napisalem wreszcie swojego taska :D

//Wiem że się cieszysz, ale następnym razem pisząc posty staraj się żeby wnosił więcej do tematu.

Opublikowano

Ja bardzo chętnie to wykorzystan napracowałeś się to lajk ci się należy to jest dopiero tut a nie jak wbić lvl peta na wrotach np

Pomogłem ?? To daj Lajka :)

  • 11 miesięcy temu...
Opublikowano

Kurwa jaki odkop :O

 

//Taaa uważajcie się dzieki temu za "pro programistów".

Żeby napisac pro task trzeba znać wyśmienicie C# i byle lama tego nie napisze ^^

 

// To nie jest odkop, biorąc pod uwagę, że tutek jest całkiem aktualny.

Anonymous

Opublikowano

Mam do was pytanko. Jak zrobić aby bot bił mi same mk i boss mk. Bo mi jakoś nie wychodzi. Proszę napiszcie.

Górnik.

Masz arraylist z npc do zabicia o nazwie HuntNpcsList, do dodania do listy używasz metody Add.

Nazwę NPC możesz podać jako string, lub użyć enuma BMain.Npc.

EXPmIpC.gif

Opublikowano

Górnik.

Masz arraylist z npc do zabicia o nazwie HuntNpcsList, do dodania do listy używasz metody Add.

Nazwę NPC możesz podać jako string, lub użyć enuma BMain.Npc.

 

Hahaha bo on jeszcze coś zrozumiał :D

//Coming debilu jaki spam -.- ?

Opublikowano

Mam do was pytanko. Jak zrobić aby bot bił mi same mk i boss mk. Bo mi jakoś nie wychodzi. Proszę napiszcie.

 

Proszę bardzo:

AttackNpcs = true;
AttackBossNpcs = true;
HuntNpcsList.AddRange(new string[] {"-=[ Kristallin ]=-", "..::{ Boss Kristallin }::.."});

  • 2 tygodnie później...
Opublikowano

Wszystko jasne ale jak to dodac? np

CollectCargoBoxes = false; < skrypt na zbieranie boxow to jak to przeniesc do bota zeby to robil ? pls

dam +

Opublikowano

Wszystko jasne ale jak to dodac? np

CollectCargoBoxes = false; < skrypt na zbieranie boxow to jak to przeniesc do bota zeby to robil ? pls

dam +

 

wklejasz gdzieś po:

public override void ChooseLogic()
{
 if (!ActionList.Contains("Mapa x-7"))
 {
 Reset();

CollectCargoBoxes = true;

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...