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; }
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); }
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); }
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; } }
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); }
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); }
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())); } } } } }
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); }
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); }
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)); }
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)); }
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; }
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)); }
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); }
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); } } }
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)); }
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); }
public SetMP(LKCamelot.model.Player play) : base(0x11) { m_Stream.Write(Util.checkUShort((uint)play.MPCur)); }
public DeleteEquipItem2(LKCamelot.script.item.Item item) : base(0x16) { m_Stream.Write((byte)item.EquipSlot); }
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"); } } } }
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)); }
public Player(LKCamelot.io.IOClient iocli) { this.client = iocli; }
public override bool Cast(LKCamelot.model.Player player) { CheckLevelUp(player); player.AddBuff(this); return true; }
public BaseArmor(LKCamelot.model.Serial serial) : base(serial) { }