#request close
I'm trying to run the robots so I have understood is simply to a character without the sequence of login, only with a command. And this is what came in the original source:
Code:
if (Cmd[0] == "@robot")
{
string Account = "";
string Name = Cmd[1];
if (Game.World.CharacterFromName(Name) == null)
{
Game.Robot R = Database.LoadAsRobot(Name, ref Account);
if (R != null)
R.Init(Account);
}
}
Code:
if (Cmd[0] == "@robot1")
{
string Account = "";
string Name = Cmd[1];
Game.Robot R = Database.LoadAsRobot(Name, ref Account);
if (R != null)
R.Init(Account);
}
Code:
public static Game.Robot LoadAsRobot(string Name, ref string Account)
{
try
{
Game.Robot C = new NewestCOServer.Game.Robot();
if (File.Exists(@"C:\OldCODB\Users\Characters\" + Name + ".chr"))
{
FileStream FS = new FileStream(@"C:\OldCODB\Users\Characters\" + Name + ".chr", FileMode.Open);
BinaryReader BR = new BinaryReader(FS);
C.Name = Name;
Account = BR.ReadString();
C.EntityID = BR.ReadUInt32();
C.Avatar = BR.ReadUInt16();
C.Body = BR.ReadUInt16();
C.Hair = BR.ReadUInt16();
C.Loc = new NewestCOServer.Game.Location();
C.Loc.Map = BR.ReadUInt16();
C.Loc.X = BR.ReadUInt16();
C.Loc.Y = BR.ReadUInt16();
C.Loc.PreviousMap = BR.ReadUInt16();
C.Job = BR.ReadByte();
C.PreviousJob1 = BR.ReadByte();
C.PreviousJob2 = BR.ReadByte();
C.Level = BR.ReadByte();
C.Experience = BR.ReadUInt64();
C.Str = BR.ReadUInt16();
C.Agi = BR.ReadUInt16();
C.Vit = BR.ReadUInt16();
C.Spi = BR.ReadUInt16();
C.StatPoints = BR.ReadUInt16();
C.CurHP = BR.ReadUInt16();
C.CurMP = BR.ReadUInt16();
C.Donation = BR.ReadUInt32();
C.Silvers = BR.ReadUInt32();
C.CPs = BR.ReadUInt32();
C.WHSilvers = BR.ReadUInt32();
C.VP = BR.ReadUInt64();
C.PKPoints = BR.ReadUInt16();
ushort GID = BR.ReadUInt16();
if (Features.Guilds.AllTheGuilds.Contains(GID))
{
C.MyGuild = (Features.Guild)Features.Guilds.AllTheGuilds[GID];
uint Don = BR.ReadUInt32(); ;
byte GR = BR.ReadByte();
if (((Hashtable)C.MyGuild.Members[GR]).Contains(C.EntityID))
{
C.GuildDonation = Don;
C.GuildRank = (Features.GuildRank)GR;
C.MembInfo = (Features.MemberInfo)((Hashtable)C.MyGuild.Members[GR])[C.EntityID];
C.MembInfo.Level = C.Level;
C.GuildDonation = C.MembInfo.Donation;
C.GuildRank = C.MembInfo.Rank;
}
else
C.MyGuild = null;
}
else BR.ReadBytes(5);
C.Equips = new NewestCOServer.Game.Equipment();
C.Equips.ReadThis(BR);
C.Inventory = new ArrayList(40);
byte InventoryCount = BR.ReadByte();
for (byte i = 0; i < InventoryCount; i++)
{
Game.Item I = new NewestCOServer.Game.Item();
I.ReadThis(BR);
C.Inventory.Add(I);
}
C.Warehouses = new NewestCOServer.Game.Banks();
C.Warehouses.ReadThis(BR);
C.Skills = new Hashtable();
byte SkillCount = BR.ReadByte();
for (byte i = 0; i < SkillCount; i++)
{
Game.Skill S = new NewestCOServer.Game.Skill();
S.ReadThis(BR);
C.Skills.Add(S.ID, S);
}
C.Profs = new Hashtable();
byte ProfCount = BR.ReadByte();
for (byte i = 0; i < ProfCount; i++)
{
Game.Prof P = new NewestCOServer.Game.Prof();
P.ReadThis(BR);
if (!C.Profs.Contains(P.ID))
C.Profs.Add(P.ID, P);
}
C.Friends = new Hashtable();
byte FriendCount = BR.ReadByte();
for (byte i = 0; i < FriendCount; i++)
{
Game.Friend F = new NewestCOServer.Game.Friend();
F.ReadThis(BR);
if (!C.Friends.Contains(F.UID))
C.Friends.Add(F.UID, F);
}
C.Enemies = new Hashtable();
byte EnemyCount = BR.ReadByte();
for (byte i = 0; i < EnemyCount; i++)
{
Game.Enemy E = new NewestCOServer.Game.Enemy();
E.ReadThis(BR);
if (!C.Enemies.Contains(E.UID))
C.Enemies.Add(E.UID, E);
}
try
{
C.DoubleExp = BR.ReadBoolean();
C.DoubleExpLeft = BR.ReadInt32();
C.BlessingLasts = BR.ReadInt32();
C.BlessingStarted = DateTime.FromBinary(BR.ReadInt64());
C.PrayTimeLeft = BR.ReadInt32();
C.ExpBallsUsedToday = BR.ReadByte();
C.Reborns = BR.ReadByte();
C.Merchant = (NewestCOServer.Game.MerchantTypes)BR.ReadByte();
C.VipLevel = BR.ReadByte();
try
{
C.LastLogin = DateTime.FromBinary(BR.ReadInt64());
}
catch { C.LastLogin = DateTime.Now; }
C.TrainTimeLeft = BR.ReadUInt16();
C.InOTG = BR.ReadBoolean();
C.LotteryUsed = BR.ReadByte();
try
{
C.WHPassword = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadByte()));
if (!C.MyClient.ValidWHPass(C.WHPassword))
C.WHPassword = "0";
C.Spouse = Encoding.ASCII.GetString(BR.ReadBytes(BR.ReadByte()));
C.UniversityPoints = BR.ReadUInt32();
C.Top = BR.ReadInt32();
}
catch
{
C.VipLevel = 0;
C.ExpBallsUsedToday = 0;
C.LotteryUsed = 0;
C.TrainTimeLeft = 0;
C.InOTG = false;
C.LotteryUsed = 0;
C.WHPassword = "0";
C.Spouse = "None";
}
}
catch { }
FS.Flush();
BR.Close();
FS.Close();
C.Loaded = true;
if (C.Top == 10)
{
C.StatEff.Add(StatusEffectEn.WeeklyPKChampion);
}
}
return C;
}
catch (Exception Exc) { Console.WriteLine(Exc); return null; }
}
Code:
public void Init(string acc)
{
if (SearchingLevPlace == true)
{ }
MyClient = new NewestCOServer.Main.GameClient(true);
MyClient.Robot = true;
MyClient.AuthInfo.Account = acc;
MyClient.MyChar = this;
if (Equips.RightHand.ID != 0)
{
if (ItemIDManipulation.Part(Equips.RightHand.ID, 0, 3) == 500)
AtkMem.AtkType = 28;
else
AtkMem.AtkType = 2;
}
else
AtkMem.AtkType = 2;
Equips.Send(MyClient, true);
LoggedOn = DateTime.Now;
if (DoubleExp && DoubleExpLeft > 0)
ExpPotionUsed = DateTime.Now;
else
DoubleExp = false;
if (BlessingLasts > 0 && InOTG)
{
InOTG = false;
ushort MinutesTrained = (ushort)((LoggedOn - LastLogin).TotalMinutes);
uint ExpAdd = (uint)(ExpBallExp * ((double)MinutesTrained / 900));
ExpAdd *= Game.World.ExperienceRate;
IncreaseExp(ExpAdd, false);
TrainTimeLeft -= MinutesTrained;
}
if (!Game.World.H_Chars.Contains(EntityID))
{
Game.World.H_Chars.Add(EntityID, this);
Game.World.Spawns(this, false);
}
}
I need help for know how to repair this and can create robots =)
Thanks and sorry about my english, i'm spanish






