Example #1
0
 public override bool Cast(LKCamelot.model.Player player)
 {
     CheckLevelUp(player);
     double temp = 0.60 + (Level * 0.02);
     player.HPCur += (int)(player.HP * temp);
     return true;
 }
Example #2
0
 public AddItemToInventory2(LKCamelot.script.item.Item item)
     : base(0x17)
 {
     m_Stream.Write((byte)item.InvSlot);
     m_Stream.Write((short)item.m_ItemID);
     m_Stream.Write((byte)02);
     m_Stream.Write((short)item.ParsedStats.Count());
     m_Stream.WriteAsciiNull(item.ParsedStats);
 }
Example #3
0
 public AddItemToEntrust(LKCamelot.script.item.Item item)
     : base(0x31)
 {
     var invslot = (item.InvSlot - 40);
     while (invslot >= 12)
         invslot -= 12;
     m_Stream.Write((byte)invslot);
     m_Stream.Write((short)item.m_ItemID);
     m_Stream.Write((byte)00);
     m_Stream.Write((short)item.ParsedStats.Count());
     m_Stream.WriteAsciiNull(item.ParsedStats);
 }
Example #4
0
        public void CastIt(model.Player player, LKCamelot.model.Point2D castx)
        {
            if (LKCamelot.model.World.Dist2d(castx.X, castx.Y, player.X, player.Y) <= 7
                && player.MPCur > this.RealManaCost(player))
            {
                player.MPCur -= this.RealManaCost(player);
                this.CheckLevelUp(player);

                player.Loc = new LKCamelot.model.Point2D(castx.X, castx.Y);
                LKCamelot.model.World.SendToAll(new LKCamelot.model.QueDele(player.Map, new LKCamelot.model.MoveSpriteTele(player.Serial, player.Face, player.X, player.Y).Compile()));
                return;
            }
        }
Example #5
0
        public CreateMonster(LKCamelot.script.monster.Monster item, Serial key)
            : base(0x1D)
        {
            m_Stream.Write((int)key);
            m_Stream.Write((short)item.Face); //facedir
            m_Stream.Write((short)item.m_Loc.X);
            m_Stream.Write((short)item.m_Loc.Y);
            m_Stream.Write((byte)1); //10 byte sprite 02 00 00 00 00 00 00 00 00 23 (first 2 last # id
            m_Stream.Fill(8);
            m_Stream.Write((short)item.m_MonsterID);
            m_Stream.Write((byte)item.Color);//1byte uk
            m_Stream.Write((byte)0);//1byte uk
            m_Stream.Write((byte)0);//1byte uk
            m_Stream.Write((byte)item.Transp);//transparency

            m_Stream.Write((byte)0); //1byte ukn
            m_Stream.Write((byte)0); //1byte ukn
            m_Stream.Write((byte)0); //1byte ukn
            m_Stream.Write((byte)0); //1byte ukn

            m_Stream.Write((byte)0); //static magic appearance
            m_Stream.Write((byte)0);
            m_Stream.Write((byte)0);
            m_Stream.Write((byte)0);

            m_Stream.Write((byte)0x02);
            m_Stream.WriteAsciiNull(item.Name);
        }
Example #6
0
        public CreateItemGround2(LKCamelot.script.item.Item item, Serial key)
            : base(0x1D)
        {
            m_Stream.Write((int)key);
            m_Stream.Write((short)1); //facedir
            m_Stream.Write((short)item.Loc.X);
            m_Stream.Write((short)item.Loc.Y);
            m_Stream.Write((byte)2); //10 byte sprite 02 00 00 00 00 00 00 00 00 23 (first 2 last # id
            m_Stream.Fill(8);
            m_Stream.Write((short)item.m_ItemID);
            m_Stream.Write((byte)2);//1byte ukn
            m_Stream.Write((byte)0);//1byte ukn
            m_Stream.Write((byte)0);//1byte ukn
            m_Stream.Write((byte)0);//1byte ukn

            m_Stream.Write((byte)0x0); //1byte ukn
            m_Stream.Write((byte)03); //1byte unclickable, transparency
            m_Stream.Write((byte)0x0); //1byte ukn
            m_Stream.Write((byte)0x2); //1byte ukn

            m_Stream.Write((byte)12);
            m_Stream.Write((byte)12);
            m_Stream.Write((byte)12);
            m_Stream.Write((byte)0);

            m_Stream.Write((byte)01);

            m_Stream.WriteAsciiNull(item.NPrefix() + " " + item.Name);
        }
Example #7
0
        public static void UpdatePlayer(LKCamelot.model.Player play)
        {
            lock (readPlayerlock)
            {
                using (StreamReader sr = new StreamReader("worldsavePl.txt"))
                {
                    while (!sr.EndOfStream)
                    {
                        string[] line = sr.ReadLine().Split(',');
                        if (line[1] != play.Name)
                            continue;

                        using (StreamWriter sw = new StreamWriter("worldsavePl.txt", true))
                        {
                            sw.WriteLine(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21},{22},{23}", Convert.ToInt32(play.Serial), play.Name, play.Pass, (int)play.Class,
            play.Stage, play.LightRad, play.Transparancy, play.Map, play.Loc.X, play.Loc.Y, play.Face,
            play.apStr, play.apMen, play.apDex, play.apVit, play.Extra, play.HP, play.HPCur, play.MP, play.MPCur, play.Level,
            play.XP, play.Gold, play.MagicLearnedString()));
                        }
                    }
                }
            }
        }
Example #8
0
 public EquipItem2(LKCamelot.script.item.Item item)
     : base(0x15)
 {
     m_Stream.Write((byte)item.EquipSlot);
     m_Stream.WriteAsciiFixed(item.NPrefix() + " " + item.Name, 32);
     m_Stream.Write((byte)0);
     m_Stream.Write((short)item.m_ItemID);
 }
Example #9
0
        public void BuyAuction(LKCamelot.LoginProto msg)
        {
            LoginProto curResp = new LoginProto();
            curResp.BuyAuctionResponseP = new BuyAuctionResponse();
            curResp.BuyAuctionResponseP.result = "2";

            LKCamelot.script.item.AuctionItem ai;
            try{
                ai = LKCamelot.model.World.NewAuctions[Convert.ToInt32(msg.BuyAuctionP.ItemSerial)];
            }
            catch{
                iweb.Send(CreateBuffer(curResp));
                return;}

            if (ai != null && ai.flags == 1)
            {
                if (player.Gold > ai.goldprice && msg.BuyAuctionP.useagold == false)
                {
                    player.m_Gold -= Convert.ToUInt64(ai.goldprice);
                    var owner = Server.playerHandler.add.Values.Where(xe => xe.Serial == ai.item.ParSer).FirstOrDefault();
                    owner.m_Gold += Convert.ToUInt64(ai.goldprice);

                    ai.buyerSerial = player.Serial;
                    ai.state = script.item.aucState.sold;

                    ai.item.ParSer = player.Serial;
                    ai.flags = 2;
                    curResp.BuyAuctionResponseP.result = "1";
                }
            }
            iweb.Send(CreateBuffer(curResp));
            CharCurMessage(player);
            GetAuctions(player);
        }
Example #10
0
        public void GetItemsMessage(LKCamelot.LoginProto msg, LKCamelot.model.Player play)
        {
            LoginProto curResp = new LoginProto();
            curResp.GetItemsResponseP = new GetItemsResponse();
            var templ = new List<TraderItem>();
            foreach (var item in play.Inventory)
            {
                var ti = new TraderItem();
                ti.Name = item.Name;
                if (item.Stage > 0)
                    ti.Name += "<br>" + item.NPrefix() + "(" + item.Stage + ")";

                ti.Quantity = item.Quantity.ToString();
                ti.Serial = ((int)(item.m_Serial)).ToString();
                ti.Sprite = item.m_ItemID.ToString();
                ti.Stage = item.Stage.ToString();
                templ.Add(ti);
            }

            curResp.GetItemsResponseP.traderItem = templ;
            iweb.Send(CreateBuffer(curResp));
        }
Example #11
0
 public void KeepAlive(LKCamelot.model.Player play)
 {
     LoginProto curResp = new LoginProto();
     curResp.KeepAliveResponseP = new KeepAliveResponse();
     curResp.KeepAliveResponseP.result = "1";
     player.keepalive = Server.tickcount.ElapsedMilliseconds;
     iweb.Send(CreateBuffer(curResp));
 }
Example #12
0
 public byte[] CreateBuffer(LKCamelot.LoginProto msg)
 {
     System.IO.MemoryStream outp = new System.IO.MemoryStream();
     Serializer.Serialize(outp, msg);
     var buff = new byte[outp.Length];
     Array.Copy(outp.GetBuffer(), 0, buff, 0, outp.Length);
     return buff;
 }
Example #13
0
        public void GetAuctions(LKCamelot.model.Player play)
        {
            var aucs = LKCamelot.model.World.NewAuctions.Values.OrderBy(xe => xe.item.Name).ThenBy(xe => xe.item.Stage).ThenBy(xe => xe.goldprice).ToList();
            LoginProto curResp = new LoginProto();
            curResp.GetAuctionsResponseP = new GetAuctionsResponse();

            var templ = new List<AuctionTraderItem>();
            foreach (var item in aucs)
            {
                if (item.state == script.item.aucState.sold
                    && item.buyerSerial != play.Serial)
                    continue;

                var tt = new AuctionTraderItem();
                var ti = new TraderItem();
                ti.Name = item.item.Name;
                if (item.item.Stage > 0)
                    ti.Name += "<br>" + item.item.NPrefix() + "("+ item.item.Stage +")";
                ti.Quantity = item.item.Quantity.ToString();
                ti.Serial = ((int)item.item.m_Serial).ToString();
                ti.Sprite = item.item.m_ItemID.ToString();
                ti.Stage = item.item.Stage.ToString();
                tt.Gold = item.goldprice.ToString();
                tt.AGold = item.agoldprice.ToString();
                tt.flags = item.flags.ToString();
                tt.BItem = ti;
                tt.count = 1;
                if (item.sellerSerial == play.Serial && item.state == script.item.aucState.forsale)
                    tt.flags = "3";
                if (item.buyerSerial == play.Serial && item.state == script.item.aucState.sold)
                    tt.flags = "2";

                templ.Add(tt);
            }
            var templ2 = templ.ToList();
            AuctionTraderItem lastitem = new AuctionTraderItem();
            lastitem.BItem = new TraderItem();

            foreach (var temp in templ2)
            {
                if (temp.BItem.Name == lastitem.BItem.Name
                    && temp.flags == "1")
                {
                    templ.Remove(temp);
                    templ[templ.IndexOf(lastitem)].count++;

                    continue;
                }
                lastitem = temp;
            }
            curResp.GetAuctionsResponseP.auctiontraderItem = templ;
            iweb.Send(CreateBuffer(curResp));
        }
Example #14
0
        public void CreateAuction(LKCamelot.LoginProto msg, LKCamelot.model.Player play)
        {
            int ser = 0;
            ulong gold = 0;
            int agold = 0;
            try{
            ser = Convert.ToInt32(msg.CreateAuctionP.ItemSerial);
            gold = Convert.ToUInt64(msg.CreateAuctionP.Gold);
            agold = Convert.ToInt32(msg.CreateAuctionP.AGold);
            }
            catch{return;}

            var item = play.Inventory.Where(xe => xe.m_Serial == ser &&
                (xe.Parent == play || xe.ParSer == play.Serial)).FirstOrDefault();
            if (item != null)
            {
                LKCamelot.script.item.Item it;
                var aucit = new script.item.AuctionItem(item, gold, 1, agold);
                aucit.sellerSerial = play.Serial;
                aucit.state = script.item.aucState.forsale;

                LKCamelot.model.World.NewItems.TryRemove(item.m_Serial, out it);
                LKCamelot.model.World.NewAuctions.TryAdd(item.m_Serial, aucit);
            }
            GetItemsMessage(msg, play);
            GetAuctions(play);
        }
Example #15
0
        public void ClaimAuction(LKCamelot.LoginProto msg)
        {
            LKCamelot.script.item.AuctionItem ai;
            try
            {
                ai = LKCamelot.model.World.NewAuctions[Convert.ToInt32(msg.ClaimAuctionP.Serial)];
            }
            catch { return; }

            if (ai != null)
            {
                if (ai.item.ParSer == player.Serial)
                {
                    ai.flags = 0;
                    LKCamelot.script.item.AuctionItem it;
                    LKCamelot.model.World.NewAuctions.TryRemove(ai.item.m_Serial, out it);
                    var titem = ai.item;
                    titem.m_InvSlot = player.FreeBankSlot;
                    titem.m_Loc = null;
                    titem.m_Parent = player;
                    titem.ParSer = player.Serial;
                    LKCamelot.model.World.NewItems.TryAdd(titem.m_Serial, titem);

                    LoginProto curResp = new LoginProto();
                    curResp.ClaimAuctionResponseP = new ClaimAuctionResponse();
                    curResp.ClaimAuctionResponseP.slot = titem.InvSlot.ToString();
                    iweb.Send(CreateBuffer(curResp));
                    CharCurMessage(player);
                    GetAuctions(player);
                }
            }
        }
Example #16
0
 public void CharCurMessage(LKCamelot.model.Player play)
 {
     LoginProto curResp = new LoginProto();
     curResp.CharCurrencyResponseP = new CharCurrencyReponse();
     curResp.CharCurrencyResponseP.Gold = play.Gold.ToString();
      //   curResp.CharCurrencyResponseP.AGold = play.Gold.ToString();
     iweb.Send(CreateBuffer(curResp));
 }
Example #17
0
 public CurveMagic(int objectID, short X, short Y, LKCamelot.script.spells.SpellSequence spellani)
     : base(0x28)
 {
     m_Stream.Write(objectID);
     m_Stream.Write(X);
     m_Stream.Write(Y);
     m_Stream.Write((byte)0);
     m_Stream.Write((byte)0);
     m_Stream.Write((byte)spellani.OnCastSprite);
     m_Stream.Write((byte)spellani.MovingSprite);
     m_Stream.Write((byte)spellani.OnImpactSprite);
     m_Stream.Fill(7);
     //   for (int i = 0; i < 7; i++) msg.Add(0x12);
     m_Stream.Write((byte)spellani.Thickness);
     m_Stream.Write((byte)spellani.Type);
     m_Stream.Write((byte)spellani.Speed);
     m_Stream.Write((byte)spellani.Streak);
 }
Example #18
0
 public SetMP(LKCamelot.model.Player play)
     : base(0x11)
 {
     m_Stream.Write(Util.checkUShort((uint)play.MPCur));
 }
Example #19
0
 public DeleteEquipItem2(LKCamelot.script.item.Item item)
     : base(0x16)
 {
     m_Stream.Write((byte)item.EquipSlot);
 }
Example #20
0
        public void SwapItems(LKCamelot.script.item.Item initem, LKCamelot.script.item.Item outitem, int outslot)
        {
            if (initem != null)
            {
                if (outitem == null)
                {
                    client.SendPacket(new DeleteItemSlot((byte)initem.InvSlot).Compile());
                    initem.InvSlot = (byte)outslot;
                    client.SendPacket(new AddItemToInventory2(initem).Compile());
                    try
                    {
                        //    World.DBConnect.WriteQue.Enqueue(() => World.DBConnect.UpdateItem(initem));
                        //  World.DBConnect.UpdateItem(initem);
                    }
                    catch { Console.WriteLine("Update Item on Swap1 Failed"); }
                }
                else
                {
                    client.SendPacket(new DeleteItemSlot((byte)initem.InvSlot).Compile());
                    client.SendPacket(new DeleteItemSlot((byte)outitem.InvSlot).Compile());
                    outitem.InvSlot = (byte)initem.InvSlot;
                    initem.InvSlot = (byte)outslot;
                    client.SendPacket(new AddItemToInventory2(initem).Compile());
                    client.SendPacket(new AddItemToInventory2(outitem).Compile());
                    try
                    {
                        //     World.DBConnect.WriteQue.Enqueue(() => World.DBConnect.UpdateItem(initem));
                        //     World.DBConnect.WriteQue.Enqueue(() => World.DBConnect.UpdateItem(outitem));
                        //  World.DBConnect.UpdateItem(initem);
                        // World.DBConnect.UpdateItem(outitem);
                    }
                    catch { Console.WriteLine("Update Item on Swap2 Failed"); }
                }

            }
        }
Example #21
0
        public void LoginMessage(LKCamelot.LoginProto msg)
        {
            var accs = LKCamelot.model.PlayerHandler.getSingleton().add.Values;
            player = accs.Where(xe => xe.Name == msg.LoginP.user).FirstOrDefault();
            bool result;

            if (player.Pass.Length > 10)
                result = LKCamelot.util.Cryption.CheckHashPass(player.Pass, player.Name, msg.LoginP.shapassword);
            else
                result = (player.Pass == msg.LoginP.shapassword);

            LoginProto logResp = new LoginProto();
            logResp.LoginReponseP = new LoginResponse();
            if (player != null)
            {
                if (player.loggedIn)
                {
                    logResp.LoginReponseP.loginresp = LoginResponse.LoginStatus.LOGGEDIN;
                }
                else if (!result)
                {
                    logResp.LoginReponseP.loginresp = LoginResponse.LoginStatus.WRONGPASS;
                }
                else if (result)
                {
                    player.loggedIn = true;
                    player.apistate = 1;
                    player.keepalive = Server.tickcount.ElapsedMilliseconds;
                    logResp.LoginReponseP.loginresp = LoginResponse.LoginStatus.SUCCESS;
                    logResp.LoginReponseP.classtype = ((int)player.m_Class).ToString();
                }
            }
            else
            {
                logResp.LoginReponseP.loginresp = LoginResponse.LoginStatus.WRONGPASS;
            }
            iweb.Send(CreateBuffer(logResp));
        }
Example #22
0
 public Player(LKCamelot.io.IOClient iocli)
 {
     this.client = iocli;
 }
Example #23
0
 public override bool Cast(LKCamelot.model.Player player)
 {
     CheckLevelUp(player);
     player.AddBuff(this);
     return true;
 }
Example #24
0
 public BaseArmor(LKCamelot.model.Serial serial)
     : base(serial)
 {
 }