Ejemplo n.º 1
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);
                }
            }
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
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));
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
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));
        }
Ejemplo n.º 6
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);
        }