see it and maybe it can help you
i got the full source if anyone interested to make it work better
this just example or what i have
MiningBot.cs
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ConquerStandAlone;
using System.Threading;
namespace ConquerMiningBot
{
public class MiningBot
{
public ListViewItem Item;
public IPlayer Player;
Thread LogicThread;
Thread UpdateThread;
List<IItem> Items = new List<IItem>();
DateTime lastminesend = DateTime.Now;
void updatethread()
{
while (true)
{
Item.SubItems[1].Text = Player.Location.X + "," + Player.Location.Y + "," + Player.Location.MapID;
Thread.Sleep(1000);
}
}
void UpdateStatus(string Status)
{
Item.SubItems[2].Text = Status;
}
bool hasspecialitem()
{
IItem[] gems = Player.Inventory.GetGems(GemPureType.DragonGem);
if (gems.Length > 0) return true;
gems = Player.Inventory.GetGems(GemPureType.KylinGem);
if (gems.Length > 0) return true;
gems = Player.Inventory.GetGems(GemPureType.MoonGem);
if (gems.Length > 0) return true;
gems = Player.Inventory.GetGems(GemPureType.GloryGem);
if (gems.Length > 0) return true;
gems = Player.Inventory.GetGems(GemPureType.PheonixGem);
if (gems.Length > 0) return true;
gems = Player.Inventory.GetGems(GemPureType.RainbowGem);
if (gems.Length > 0) return true;
gems = Player.Inventory.GetGems(GemPureType.ThunderGem);
if (gems.Length > 0) return true;
gems = Player.Inventory.GetGems(GemPureType.TortoiseGem);
if (gems.Length > 0) return true;
gems = Player.Inventory.GetGems(GemPureType.VioletGem);
if (gems.Length > 0) return true;
gems = Player.Inventory.GetGems(GemPureType.FuryGem);
if (gems.Length > 0) return true;
if (Player.Inventory.GetItemFromName("Meteor") != null) return true;
if (Player.Inventory.GetItemFromName("DragonBall") != null) return true;
if (Player.Inventory.GetItemFromName("PermanentStone") != null) return true;
if (Player.Inventory.GetItemFromName("BigPermanentStone") != null) return true;
return false;
}
void CollectSpecialItems()
{
Form1.SpecialItems++;
Form1.status.Text = "Got A Total of " + Form1.SpecialItems + " Special Items";
Form1.BotCore.Login("ncamara33", "toronto2003", "208.96.34.46", "Leo", 9959);
UpdateStatus("Waiting For Collector To Login");
while (Form1.Collector == null)
{
Thread.Sleep(1000);
}
TradeSession session = Player.Screen.FindEntity("UltiShop").Interaction.StartTrade();
UpdateStatus("Trading Items To Collector");
while (!session.TradeAvaliable())
Thread.Sleep(1000);
List<IItem> ValuableItems = new List<IItem>();
IItem[] gems = Player.Inventory.GetGems(GemPureType.DragonGem);
ValuableItems.AddRange(gems);
gems = Player.Inventory.GetGems(GemPureType.FuryGem);
ValuableItems.AddRange(gems);
gems = Player.Inventory.GetGems(GemPureType.GloryGem);
ValuableItems.AddRange(gems);
gems = Player.Inventory.GetGems(GemPureType.KylinGem);
ValuableItems.AddRange(gems);
gems = Player.Inventory.GetGems(GemPureType.MoonGem);
ValuableItems.AddRange(gems);
gems = Player.Inventory.GetGems(GemPureType.PheonixGem);
ValuableItems.AddRange(gems);
gems = Player.Inventory.GetGems(GemPureType.RainbowGem);
ValuableItems.AddRange(gems);
gems = Player.Inventory.GetGems(GemPureType.ThunderGem);
ValuableItems.AddRange(gems);
gems = Player.Inventory.GetGems(GemPureType.TortoiseGem);
ValuableItems.AddRange(gems);
gems = Player.Inventory.GetGems(GemPureType.VioletGem);
ValuableItems.AddRange(gems);
string[] names = { "Meteor", "DragonBall", "PermanentStone", "BigPermanentStone","+1Stone" };
foreach (string name in names)
{
IItem itm = Player.Inventory.GetItemFromName(name);
if (itm != null)
ValuableItems.Add(itm);
}
foreach (IItem itm in ValuableItems.ToArray())
{
session.AddItem(itm);
}
if (Player.Inventory.Gold > 2000)
{
session.AddGold((int)(Player.Inventory.Gold - 1000));
}
session.AcceptTrade();
}
void logicthread()
{
IItem itm=null;
while (true)
{
if (Player.Location.MapID == 1002)
{
System.Threading.Thread.Sleep(4000);
UpdateStatus("Going To Pharmacist");
Player.Controls.GotoUnThreaded(466, 332);
UpdateStatus("Selling Useless Items");
IItem[] useless = Player.Inventory.GetOres(OreType.EuxeniteOre);
foreach (IItem use in useless)
{
Player.Screen.GetNPC("Pharmacist").SellItem(use);
Thread.Sleep(300);
}
useless = Player.Inventory.GetOres(OreType.CopperOre);
foreach (IItem use in useless)
{
Player.Screen.GetNPC("Pharmacist").SellItem(use);
Thread.Sleep(300);
}
useless = Player.Inventory.GetOres(OreType.IronOre);
foreach (IItem use in useless)
{
Player.Screen.GetNPC("Pharmacist").SellItem(use);
Thread.Sleep(300);
}
useless = Player.Inventory.GetOres(OreType.GoldOre);
foreach (IItem use in useless)
{
Player.Screen.GetNPC("Pharmacist").SellItem(use);
}
while (Player.Inventory.GetItemFromName("TwinCityGate") != null)
{
Player.Screen.GetNPC("Pharmacist").SellItem(Player.Inventory.GetItemFromName("TwinCityGate"));
Thread.Sleep(300);
}
UpdateStatus("Heading To Conductress");
Player.Controls.GotoUnThreaded(441, 438);
UpdateStatus("Talking With Conductress");
INPCOption[] options = Player.Screen.GetNPC("Conductress").Communicate();
bool step1 = false;
foreach (INPCOption option in options)
{
if (option.OptionText == "Enter the Market.")
{
step1 = true;
INPCOption[] options2 = Player.Screen.GetNPC("Conductress").Communicate(option);
foreach (INPCOption opt in options2)
{
if (opt.OptionText == "Mine Cave")
{
Player.Screen.GetNPC("Conductress").Communicate(opt);
}
}
break;
}
}
if (!step1)
{
foreach (INPCOption option in options)
{
if (option.OptionText == "Mine Cave")
{
Player.Screen.GetNPC("Conductress").Communicate(option);
}
}
}
System.Threading.Thread.Sleep(4000);
UpdateStatus("Entering Mine Cave");
while (Player.Location.MapID == 1002)
{
options = Player.Screen.GetNPC("Assistant").Communicate();
string text = Player.Screen.GetNPC("Assistant").DialogText;
foreach (INPCOption option in options)
{
if (option.OptionText == "No problem.")
{
INPCOption[] options2 = Player.Screen.GetNPC("Assistant").Communicate(option);
foreach (INPCOption opt in options2)
{
if (text.ToLower().Contains(opt.OptionText.ToLower()))
{
Player.Screen.GetNPC("Assistant").Communicate(opt);
}
}
}
}
System.Threading.Thread.Sleep(2000);
}
}
if (Player.Inventory.GetItemCount() < 39)
{
UpdateStatus("Starting To Mine!");
Player.Controls.GotoUnThreaded(168, 112);
Player.Controls.StartMining();
lastminesend = DateTime.Now.AddMinutes(1);
Items.Clear();
foreach (IItem i in Player.Inventory.GetItemsFromInventory())
{
Items.Add(i);
}
while (Player.Inventory.GetItemCount() < 39)
{
if (lastminesend < DateTime.Now)
{
lastminesend = DateTime.Now.AddMinutes(1);
Player.Controls.StartMining();
}
IItem[] inventoryitems = Player.Inventory.GetItemsFromInventory();
foreach (IItem i in inventoryitems)
{
if (!Items.Contains(i))
{
UpdateStatus("Mining Got (" + i.Name + ")");
Items.Add(i);
}
}
//fawk i dont need that XD
if (Form1.Collector == null && !Form1.Collecting)
{
if (hasspecialitem())
{
Form1.Collecting = true;
CollectSpecialItems();
UpdateStatus("Mining!");
}
}
Thread.Sleep(1000);
}
UpdateStatus("Inventory Full, Going To Twin City");
itm = Player.Inventory.GetItemFromName("TwinCityGate");
if (itm != null)
itm.UseItem();
}
else
{
itm = Player.Inventory.GetItemFromName("TwinCityGate");
if (itm != null)
itm.UseItem();
}
}
}
public void Start()
{
if (LogicThread == null)
{
LogicThread = new Thread(logicthread);
LogicThread.Start();
}
UpdateThread = new Thread(updatethread);
UpdateThread.Start();
}
}
}
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConquerStandAlone
{
public enum ConquerErrorCodes : int
{
InvalidUsername=1,
UnableToConnect=2
}
public class StandAlone
{
public delegate void LoggedIn(IPlayer Player);
public delegate void ConquerError(ConquerErrorCodes ErrorCode, string ErrorMessage, LoginPlayer Player);
public delegate void SocketOperation(IPlayer Player);
public delegate void MessagePacket(IPlayer Player, string From, string To, string Message, ChatID ChatID);
public delegate void RequestTrade(IPlayer Player, IEntity Requester);
public delegate void ItemChange(IPlayer Player, IItem Item);
public delegate void PathComplete(IPlayer Player, int PathID);
public delegate void Death(IPlayer Player);
public delegate void CharacterCreation(IPlayer Player,string Username, ref string Name, ref Profession Profession, ref ModelType Model,string ErrorMessage);
public delegate void MapChange(IPlayer Player, ushort NewMap);
public delegate void StatusUpdate(IPlayer Player,IEntity Entity,StatusID ID,ulong Value);
public delegate void PickupItem(IPlayer Player, IItem PickedUpItem,out bool KeepItem);
public delegate void BotCheckPacket(IPlayer Player, uint BotCheckType,ulong Request, int index, int Response);
public delegate void XPSkill(IPlayer player);
public delegate void UnknownPacket(IPlayer Player, byte[] Packet);
public event StatusUpdate OnStatusChange;
public event SocketOperation OnPlayerDisconnect;
public event CharacterCreation OnCharacterCreation;
public event LoggedIn OnLoggedIn;
public event MessagePacket OnChat;
public event ConquerError OnLoginError;
public event RequestTrade OnRequestTrade;
public event ItemChange OnLowDura;
public event PathComplete OnPathComplete;
public event PickupItem OnPickupItem;
public event Death OnDeath;
public event MapChange OnMapChange;
public event XPSkill OnXPSkill;
public event BotCheckPacket OnBotCheck;
public event UnknownPacket OnUnknownPacket;
public bool CompleteLogin = true;
public StandAlone()
{
Items.LoadItems();
Spells.Load();
Dmaps.Load();
LongBotCheck.LoadBotchecks();
}
internal void DoUnknownPacket(IPlayer Player, byte[] Packet)
{
if (OnUnknownPacket != null)
OnUnknownPacket.Invoke(Player, Packet);
}
internal void DoBotCheck(IPlayer Player, uint BotCheckType, ulong Request, int Index, int Response)
{
if (OnBotCheck != null)
OnBotCheck.Invoke(Player, BotCheckType, Request, Index, Response);
}
internal void DoXPSkill(IPlayer player)
{
if (OnXPSkill != null)
OnXPSkill.Invoke(player);
}
internal bool DoPickupItem(IPlayer Player, IItem PickedUpItem)
{
bool KeepItem = false;
if (OnPickupItem != null)
OnPickupItem.Invoke(Player, PickedUpItem,out KeepItem);
return KeepItem;
}
internal void DoStatusUpdate(IPlayer Player, IEntity Entity, StatusID ID,ulong Value)
{
if (OnStatusChange != null)
{
OnStatusChange.Invoke(Player, Entity, ID,Value);
}
}
internal void PlayerDeath(IPlayer Player)
{
if (OnDeath != null)
OnDeath.Invoke(Player);
}
internal void mapchange(IPlayer Player, ushort newmap)
{
if (OnMapChange != null)
OnMapChange.Invoke(Player, newmap);
}
internal void CreateCharacter(IPlayer Player,string Username, ref string Name, ref Profession Profession, ref ModelType Model,string ErrorMessage)
{
if (OnCharacterCreation != null)
OnCharacterCreation.Invoke(Player,Username, ref Name, ref Profession, ref Model,ErrorMessage);
}
internal void pathcomplete(IPlayer Player, int pathid)
{
if (OnPathComplete != null)
OnPathComplete.Invoke(Player, pathid);
}
internal void lowdura(IPlayer player, IItem itm)
{
if (OnLowDura != null)
OnLowDura.Invoke(player, itm);
}
internal void LoginComplete(IPlayer Player)
{
if (OnLoggedIn != null)
OnLoggedIn.Invoke(Player);
}
internal void Disconnect(IPlayer Player)
{
if (OnPlayerDisconnect != null)
OnPlayerDisconnect.Invoke(Player);
}
internal void DoRequestTrade(IPlayer Player, IEntity From)
{
if (OnRequestTrade != null)
OnRequestTrade.Invoke(Player, From);
}
internal void Message(IPlayer Player, string From, string To, string Message, ChatID ChatID)
{
if (OnChat != null)
OnChat.Invoke(Player, From, To, Message, ChatID);
}
internal void reporterror(ConquerErrorCodes errorcode,string errormsg,LoginPlayer player)
{
if (OnLoginError != null)
OnLoginError.Invoke(errorcode, errormsg, player);
}
public void Login(string Username, string Password, string ServerIP,string ServerName, int Port)
{
new LoginPlayer(Username, Password, ServerName, ServerIP, Port, this);
}
}
}






