/// <summary> /// 判断是否存在要求回收的物品 /// </summary> /// <param name="note"></param> /// <param name="s"></param> /// <returns>true表示发生变化</returns> public static bool Task10004(UserNote note, Variant s) { if (s.GetIntOrDefault("Cur") == s.GetIntOrDefault("Total")) return false; if (!s.ContainsKey("GoodsID")) return false; if (s.GetIntOrDefault("Type") != 10004) return false; int m = GameConfigAccess.Instance.GetStactCount(s.GetStringOrDefault("GoodsID")); if (m <= 0) return false; PlayerEx burden = note.Player.B0; IList c = burden.Value.GetValue<IList>("C"); int number = 0; foreach (Variant d in c) { if (d.GetStringOrDefault("G") == s.GetStringOrDefault("GoodsID")) { number += d.GetIntOrDefault("A"); } } if (number >= s.GetIntOrDefault("Total")) s["Cur"] = s.GetIntOrDefault("Total"); else s["Cur"] = number; return true; }
public Apc(Variant config) { ID = config.GetStringOrDefault("_id"); this.Name = config.GetStringOrDefault("Name"); Name = config.GetStringOrDefault("Name"); m_value = config.GetVariantOrDefault("Value"); m_life = new PlayerProperty(); if (m_value != null) { m_life.Add(m_value); this.Level = m_value.GetIntOrDefault("Level"); } this.ApcType = FighterType.APC; Variant ui = config.GetVariantOrDefault("UI"); if (ui != null) { this.Skin = ui.GetStringOrDefault("Skin"); string apcType = ui.GetStringOrDefault("Type"); if (apcType == "BB") { this.ApcType = FighterType.BB; } else if (apcType == "Boss") { this.ApcType = FighterType.Boss; } } }
/// <summary> /// 学习宠物技能(御宠图鉴) /// </summary> /// <param name="variant"></param> public bool AddPetBook(Variant c) { string skillID = c.GetStringOrDefault("SkillID"); if (string.IsNullOrEmpty(skillID)) return false; int level = c.GetIntOrDefault("SkillLev"); var skill = m_petBook.Value.GetValueOrDefault<List<object>>(skillID); if (skill == null) { skill = new List<object>(); m_petBook.Value[skillID] = skill; } if (skill.Contains(level)) { return false; } int mustslevel = level - 1; if (mustslevel > 0 && (!skill.Contains(mustslevel))) { return false; } skill.Add(level); m_petBook.Save(); this.Call(ClientCommand.UpdateActorR, new PlayerExDetail(m_petBook)); return true; }
public static LimitGoods Create(string name, Variant v) { string goodsid = v.GetStringOrDefault("GoodsID"); if (!string.IsNullOrEmpty(goodsid)) { return new LimitGoods(name, goodsid); } return null; }
public ScenePin(Variant gc) { _id = gc.GetStringOrDefault("_id"); _autoPath = (gc.GetStringOrDefault("SubType") == "4"); Variant v = gc.GetVariantOrDefault("Value"); if (v != null) { _sceneA = v.GetStringOrDefault("SceneID"); _x = v.GetIntOrDefault("X"); _y = v.GetIntOrDefault("Y"); m_destination = new Destination( v.GetStringOrDefault("SceneB"), v.GetIntOrDefault("BX"), v.GetIntOrDefault("BY") ); const int s = 4; m_range = new Rectangle(_x - s, _y - s, 2 * s, 2 * s); } }
public HideApc(Variant config) : base(config) { ID = config.GetStringOrDefault("_id"); Variant v = config.GetVariantOrDefault("Value"); if (v != null) { SceneID = v.GetStringOrDefault("SceneID"); Range = RangeHelper.NewRectangle(v["Range"] as Variant, true); } }
public static LimitOpentime Create(string name, Variant v) { string openTime = v.GetStringOrDefault("OpenTime"); var result = InitOpenTime(name, openTime); if (result != null && result.Count > 0) { string openTimeMsg = string.Format(TipManager.GetMessage(ClientReturn.IntoLimit6), name, openTime); return new LimitOpentime(result, openTimeMsg); } return null; }
public Box(Variant config) { ID = config.GetStringOrDefault("_id"); Name = config.GetStringOrDefault("Name"); m_value = config.GetVariantOrDefault("Value"); if (m_value != null) { this.SceneID = m_value.GetStringOrDefault("SceneID"); this.GoodsID = m_value.GetStringOrDefault("GoodsID"); this.OpenMS = m_value.GetIntOrDefault("OpenMS"); this.GrowSecond = m_value.GetIntOrDefault("GrowSecond"); this.MaxOpen = m_value.GetIntOrDefault("MaxOpen"); m_range = RangeHelper.NewRectangle(m_value.GetVariantOrDefault("Range"), true); } Variant ui = config.GetVariantOrDefault("UI"); if (ui != null) { this.Skin = ui.GetStringOrDefault("Skin"); } if (this.GrowSecond <= 0) { this.GrowSecond = 30; } }
private static string GetPetSkin(Variant v) { string skin = v.GetStringOrDefault("Skin"); int rank = v.GetIntOrDefault("PetsRank"); int index = skin.IndexOf('|'); if (index >= 0) { string[] skins = skin.Split('|'); if (rank < skins.Length) { return skins[rank]; } } return skin + rank.ToString(); }
public FightAction(Variant v, int fightCount) { this.ActionType = (ActionType)(v.GetIntOrDefault("fType")); this.Sender = v.GetStringOrDefault("handler"); object obj; if (v.TryGetValueT("target", out obj)) { this.Target = (obj == null ? string.Empty : obj.ToString()); } if (v.TryGetValueT("parameter", out obj)) { this.Parameter = (obj == null ? string.Empty : obj.ToString()); } this.FightCount = fightCount; }
/// <summary> /// 换装操作 /// </summary> /// <param name="note"></param> private void Dress(UserNote note, Goods g) { //表示角色正在战斗中,客户端提交信息不进行处理 if (note.Player.AState == ActionState.Fight) return; string goodsid = note.GetString(0); if (g == null) { note.Call(GoodsCommand.UseGoodsR, false, TipManager.GetMessage(GoodsReturn.NoGoodsInfo)); return; } int check = DressLimit(note.Player, g); if (check != 0) { note.Call(GoodsCommand.UseGoodsR, false, TipManager.GetMessage(check)); return; } //得到装备面板 PlayerEx panel = note.Player.Equips; if (panel == null) { panel = note.Player.Value["Equips"] as PlayerEx; if (panel == null) { //LogWrapper.Error("角色:" + note.Player.Name + "装被面板为空"); return; } } Variant pv = panel.Value; PlayerEx b = note.Player.B0; if (b == null) { note.Call(GoodsCommand.UseGoodsR, false, TipManager.GetMessage(GoodsReturn.EquipError)); return; } IList c = b.Value.GetValue<IList>("C"); string str = g.Value.GetStringOrDefault("GoodsType"); //得到装备可以存放的位置 GameConfig gc = GameConfigAccess.Instance.FindOneById(g.GoodsID); if (gc == null) { note.Call(GoodsCommand.UseGoodsR, false, TipManager.GetMessage(GoodsReturn.EquipError)); return; } IDictionary<string, object> k = null; string name = string.Empty; switch (str) { case "111001"://武器 k = pv["P0"] as IDictionary<string, object>; name = "P0"; break; case "111002"://头盔 k = pv["P5"] as IDictionary<string, object>; name = "P5"; break; case "111003"://衣服 k = pv["P6"] as IDictionary<string, object>; name = "P6"; break; case "111004"://护腕 IDictionary<string, object> p3 = pv["P3"] as IDictionary<string, object>; IDictionary<string, object> p8 = pv["P8"] as IDictionary<string, object>; if (p3.GetStringOrEmpty("E") == string.Empty) { k = p3; name = "P3"; } else if (p8.GetStringOrEmpty("E") == string.Empty) { k = p8; name = "P8"; } else if (p111004 == 0) { k = p3; name = "P3"; p111004 = p111004 == 0 ? 1 : 0; } else { k = p8; name = "P8"; p111004 = p111004 == 0 ? 1 : 0; } break; case "111005"://腰带 k = pv["P2"] as IDictionary<string, object>; name = "P2"; break; case "111006"://鞋子 k = pv["P7"] as IDictionary<string, object>; name = "P7"; break; case "111007"://项链 k = pv["P1"] as IDictionary<string, object>; name = "P1"; break; case "111008"://戒子 IDictionary<string, object> p4 = pv["P4"] as IDictionary<string, object>; IDictionary<string, object> p9 = pv["P9"] as IDictionary<string, object>; if (p4.GetStringOrEmpty("E") == string.Empty) { k = p4; name = "P4"; } else if (p9.GetStringOrEmpty("E") == string.Empty) { k = p9; name = "P9"; } else if (p111008 == 0) { k = p4; name = "P4"; p111008 = p111008 == 0 ? 1 : 0; } else { k = p9; name = "P9"; p111008 = p111008 == 0 ? 1 : 0; } break; //case "111010"://坐骑 // k = pv["P10"] as IDictionary<string, object>; // name = "P10"; // break; //case "111000"://时装 // k = pv["P11"] as IDictionary<string, object>; // name = "P11"; // break; } if (k == null || name == string.Empty) { note.Call(GoodsCommand.UseGoodsR, false, TipManager.GetMessage(GoodsReturn.EquipError)); return; } IDictionary<string, object> info = null; foreach (IDictionary<string, object> p in c) { if (g.ID == p.GetStringOrDefault("E")) { //得到装备所在格子的信息 info = p; break; } } if (info == null) { note.Call(GoodsCommand.UseGoodsR, false, TipManager.GetMessage(GoodsReturn.BurdenError)); return; } string name2 = null; string skin = gc.UI.GetStringOrDefault("Skin"); switch (str) { //case "111000": // //时装 // name2 = "Coat"; // note.Player.Coat = skin; // break; case "111001": //武器 name2 = "Weapon"; note.Player.Weapon = skin; break; case "111003": //衣服 name2 = "Body"; note.Player.Body = skin; break; //case "111010": // //坐骑 // name2 = "Mount"; // note.Player.Mount = skin; // break; } Variant tmp = new Variant(); tmp["E"] = k["E"]; tmp["G"] = k["G"]; tmp["A"] = k["A"]; tmp["S"] = k["S"]; tmp["H"] = k["H"]; tmp["D"] = k["D"]; tmp["T"] = k["T"]; //tmp["R"] = k["R"]; //换装 string g1 = info.GetStringOrDefault("G"); string g2 = string.Empty; if (k["E"].ToString() == string.Empty) { k["E"] = info["E"]; k["G"] = info["G"]; k["A"] = info["A"]; k["S"] = info["S"]; k["H"] = info["H"]; k["D"] = info["D"]; k["T"] = info["T"]; //k["R"] = info["R"]; //更新包袱 BurdenManager.BurdenClear(info); } else { k["E"] = info["E"]; k["G"] = info["G"]; k["A"] = info["A"]; k["S"] = info["S"]; k["H"] = info["H"]; k["D"] = info["D"]; k["T"] = info["T"]; //k["R"] = info["R"]; //note.Player.UserNote_T(k.GetStringOrDefault("G"));//表示两类道具交换,都要通知任务 //更新包袱 info["E"] = tmp["E"]; info["G"] = tmp["G"]; info["A"] = tmp["A"]; info["S"] = tmp["S"]; info["H"] = tmp["H"]; info["D"] = tmp["D"]; info["T"] = tmp["T"]; g2 = tmp.GetStringOrDefault("G"); //note.Player.UserNote_T(info.GetStringOrDefault("G")); //info["R"] = tmp["R"]; } b.Save(); note.Player.SaveClothing(); panel.Save(); note.Player.RefreshPlayer(name2, skin); note.Call(GoodsCommand.UseGoodsR, true, g.ID); note.Call(GoodsCommand.GetEquipPanelR, true, pv); note.Player.UpdateBurden(); //通知任务 if (!string.IsNullOrEmpty(g1)) { note.Player.UpdateTaskGoods(g1); } if (!string.IsNullOrEmpty(g2)) { note.Player.UpdateTaskGoods(g2); } }
/// <summary> /// 得到一种道具,判断需要多少格子 /// </summary> /// <param name="Content">包袱列表</param> /// <param name="goodsid">道具id</param> /// <param name="number0">非绑定道具数量</param> /// <param name="number1">绑定道具数量</param> /// <returns>需要空格子数量</returns> public static int NeedSpace(IList Content, string goodsid, Variant v, int sc) { int space = 0; for (int isbinding = 0; isbinding <= 1; isbinding++) { //0为非绑定,1为绑定 int number = v.GetIntOrDefault("Number" + isbinding); if (number <= 0) continue; int cur = 0;//当前该物品所占的格子数 foreach (Variant k in Content) { if (k.GetStringOrDefault("G") != goodsid) continue; if (k.GetIntOrDefault("H") != isbinding) continue; if (v.ContainsKey("EndTime")) { Variant t = k.GetVariantOrDefault("T"); if (t == null) continue; if (t.GetStringOrDefault("EndTime") != v.GetStringOrDefault("EndTime")) continue; } number += k.GetIntOrDefault("A"); cur++; } int m = 0;//余数 int n = Math.DivRem(number, sc, out m); n = m > 0 ? n + 1 : n; space += (n > cur) ? (n - cur) : 0; } return space; }
public BaseConfig(Variant config) { this.BaseDirectory = AppDomain.CurrentDomain.BaseDirectory; this.Platform = config.GetStringOrDefault("Platform", Sinan.Entity.Platform.Tencent); this.DirConfig = Path.Combine(this.BaseDirectory, fixPath(config.GetStringOrDefault("DirConfig", "Config"))); this.Crossdomain = Path.Combine(DirConfig, fixPath(config.GetStringOrDefault("Crossdomain", "crossdomain.txt"))); this.DirBase = Path.Combine(DirConfig, fixPath(config.GetStringOrDefault("DirBase", "base"))); this.DirGame = Path.Combine(DirConfig, fixPath(config.GetStringOrDefault("DirGame", "game"))); this.DirDB = Path.Combine(DirConfig, fixPath(config.GetStringOrDefault("DirDB", "db"))); this.Language = config.GetStringOrDefault("Language"); if (!string.IsNullOrWhiteSpace(Language)) { string path = Path.Combine(DirConfig, fixPath(Language)); if (Directory.Exists(path)) { this.DirBase = path; } } this.DirPlugin = Path.Combine(BaseDirectory, fixPath(config.GetStringOrDefault("DirPlugin", "Plugins"))); this.Log4Config = Path.Combine(BaseDirectory, fixPath(config.GetStringOrDefault("Log4Config", "log4net.config"))); this.DbBase = config.GetStringOrDefault("DbBase"); this.DbLog = config.GetStringOrDefault("DbLog"); this.DbPlayer = config.GetStringOrDefault("DbPlayer"); string epGame = config.GetStringOrDefault("EpGame"); this.EpGame = CreateEndPoint(epGame); string epGM = config.GetStringOrDefault("EpGM"); this.EpGM = CreateEndPoint(epGM); string epGMM = config.GetStringOrDefault("EpGMM"); this.EpGMM = CreateEndPoint(epGMM); string epShip = config.GetStringOrDefault("EpShip"); this.EpShip = CreateEndPoint(epShip); this.MaxClient = config.GetIntOrDefault("MaxClient", 500); this.SendQueueSize = config.GetIntOrDefault("SendQueueSize", 100); this.MaxLevel = config.GetIntOrDefault("MaxLevel", 100); this.MaxNameLen = config.GetIntOrDefault("MaxNameLen", 16); this.Zoneid = config.GetIntOrDefault("Zoneid"); this.ZoneEpoch = config.GetUtcTimeOrDefault("ZoneEpoch"); this.DesKey = config.GetStringOrDefault("DESKey"); this.LoginKey = config.GetStringOrDefault("LoginKey") ?? config.GetStringOrDefault("MD5Key"); this.RechargeKey = config.GetStringOrDefault("RechargeKey"); this.GMKey = config.GetStringOrEmpty("GMKey"); this.ReportSIP = config.GetStringOrDefault("ReportSIP"); this.WebAddress = config.GetStringOrDefault("WebAddress"); this.FreeCoin = config.GetBooleanOrDefault("FreeCoin", false); }
/// <summary> /// 检查物品是否存在 /// </summary> /// <param name="note"></param> /// <param name="s"></param> public static void TaskFinish10003(UserNote note, Variant s) { PlayerEx b0 = note.Player.B0; IList c = b0.Value.GetValue<IList>("C"); int num = BurdenManager.BurdenGoodsCount(c, s.GetStringOrDefault("GoodsID")); s["Cur"] = Math.Min(s.GetIntOrDefault("Total"), num); }
/// <summary> /// 接收任务时发方道具 /// </summary> /// <param name="note"></param> /// <param name="s"></param> public static bool TaskFinish10010(UserNote note, Variant s) { if (s.GetIntOrDefault("Cur") >= s.GetIntOrDefault("Total")) return true; Dictionary<string, Variant> dic = new Dictionary<string, Variant>(); Variant v = new Variant(); v.Add("Number1", s.GetIntOrDefault("Total")); dic.Add(s.GetStringOrDefault("GoodsID"), v); if (BurdenManager.IsFullBurden(note.Player.B0, dic)) return false; note.Player.AddGoods(dic, GoodsSource.TaskFinish10010); s["Cur"] = s.GetIntOrDefault("Total"); return true; }
public bool SetFightPro(Variant v, int number = 1) { string name = v.GetStringOrDefault("ProType"); if (name == "WG" || name == "MG" || name == "MF" || name == "WF" || name == "CP") { int a = v.GetIntOrDefault("A"); int second = v.GetIntOrDefault("S") * number; if (a > 0 && second > 0) { SetFightPro(name, a, second); return true; } } return false; }
/// <summary> /// GM卸装 /// </summary> /// <param name="player"></param> /// <param name="v"></param> private static void GMUninstall(PlayerBusiness player, Variant v) { Goods g = GoodsAccess.Instance.GetGoodsByID(v.GetStringOrDefault("E"), player.ID); if (g != null) { string goodsType = g.Value.GetStringOrDefault("GoodsType"); Variant shengTi = RoleManager.Instance.GetAllRoleConfig(player.RoleID); string name = string.Empty; string value = string.Empty; bool ischange = false; switch (goodsType) { case "111000": //时装 name = "Coat"; value = shengTi.GetStringOrDefault("Coat"); player.Coat = value; ischange = true; break; case "111001": //武器 name = "Weapon"; value = shengTi.GetStringOrDefault("Weapon"); player.Weapon = value; ischange = true; break; case "111003": //衣服 name = "Body"; value = shengTi.GetStringOrDefault("Body"); player.Body = value; ischange = true; break; case "111010": //坐骑 name = "Mount"; value = shengTi.GetStringOrDefault("Mount"); player.Mount = value; ischange = true; break; } if (ischange) { player.SaveClothing(); } player.RefreshPlayer(name, value); } player.Call(GoodsCommand.UninstallR, true, g.GoodsID); }
/// <summary> /// 申请入族 /// </summary> /// <param name="note"></param> public static void FamilyApply(UserNote note) { PlayerEx familyEx = note.Player.Family; if (familyEx == null) { note.Call(FamilyCommand.FamilyApplyR, false, TipManager.GetMessage(FamilyReturn.FamilyError)); return; } if (familyEx == null || familyEx.Value.GetStringOrDefault("FamilyID") != string.Empty) { note.Call(FamilyCommand.FamilyApplyR, false, TipManager.GetMessage(FamilyReturn.FamilyExist)); return; } if (familyEx.Value.GetStringOrDefault("FreezeDate") != string.Empty) { DateTime FreezeDate = familyEx.Value.GetDateTimeOrDefault("FreezeDate"); //if ((DateTime.TryParse(familyEx.Value.GetStringOrDefault("FreezeDate"), out FreezeDate))) //{ if (FreezeDate.ToLocalTime() > DateTime.Now) { note.Call(FamilyCommand.FamilyCreateR, false, string.Format(TipManager.GetMessage(FamilyReturn.FreezeDate), FreezeDate.ToLocalTime().ToString())); return; } //} } //申请的家族 string familyid = note.GetString(0); Family family = FamilyAccess.Instance.FindOneById(familyid); if (family == null) { note.Call(FamilyCommand.FamilyApplyR, false, TipManager.GetMessage(FamilyReturn.NoFamily)); return; } int ApplyCount = 0;//当前申请入族次数 foreach (Variant d in applyList.Values) { if (d.GetStringOrDefault("ID") == note.PlayerID) ApplyCount++; } if (ApplyCount >= 10) { note.Call(FamilyCommand.FamilyApplyR, false, TipManager.GetMessage(FamilyReturn.InApplyLimit)); return; } FamilyExpired(); IList Persons = family.Value.GetValue<IList>("Persons"); Variant dy = FamilyBase.FamilyCount(family.Value.GetIntOrDefault("Level")); //家族人数达到上限,不能再申请 if (Persons.Count >= dy.GetIntOrDefault("Persons")) { note.Call(FamilyCommand.FamilyApplyR, false, TipManager.GetMessage(FamilyReturn.PersonsLimit)); return; } string appid = family.ID + "," + note.PlayerID; if (applyList.ContainsKey(appid)) { Variant v = applyList[appid]; if (v.GetDateTimeOrDefault("DateTime") > DateTime.UtcNow) { note.Call(FamilyCommand.FamilyApplyR, false, TipManager.GetMessage(FamilyReturn.IsApply)); return; } applyList.Remove(appid); } Variant t = new Variant(); t.Add("DateTime", DateTime.UtcNow.AddHours(1)); t.Add("SoleID", appid); t.Add("ID", note.PlayerID); t.Add("Name", note.Player.Name); t.Add("FamilyID", family.ID); t.Add("FamilyName", family.Name); if (!applyList.ContainsKey(appid)) applyList.Add(appid, t); Variant tmp = new Variant(); tmp.Add("ID", t.GetStringOrDefault("SoleID")); tmp.Add("Message", string.Format(TipManager.GetMessage(FamilyReturn.ApplyFamilySuccess), note.Player.Name, family.Name)); foreach (Variant d in Persons) { if (d.GetIntOrDefault("RoleID") == 2) continue; PlayerBusiness pb = PlayersProxy.FindPlayerByID(d.GetStringOrDefault("PlayerID")); if (pb != null && pb.Online) { pb.Call(FamilyCommand.FamilyApplyR, true, tmp); } } }
/// <summary> /// 接收任务时玩家等级判断 /// </summary> /// <param name="note"></param> /// <param name="s"></param> /// <returns></returns> public static bool TaskFinish30001(UserNote note, Variant s) { //接收任务时候的等级限制 if (s.GetStringOrDefault("Type") == "30001") { if (note.Player.Level < s.GetIntOrDefault("Total")) { note.Call(TaskCommand.UpdateTaskR, false, TipManager.GetMessage(TaskReturn.TaskRevNoLevel)); return false; } s["Cur"] = s.GetIntOrDefault("Total"); } return true; }
/// <summary> /// 对话过程中回收道具, /// 回收成功表示任务完成条件达成 /// </summary> /// <param name="note"></param> /// <param name="s"></param> public static void TaskFinish10006(UserNote note, Variant s) { string sceneid = s.GetStringOrDefault("SceneID"); string goodsid = s.GetStringOrDefault("GoodsID"); if (sceneid == null || goodsid == null) return; if (sceneid != note.Player.SceneID) return; int total = s.GetIntOrDefault("Total"); if (note.Player.RemoveGoods(goodsid, total, GoodsSource.TaskFinish10006)) { s["Cur"] = s.GetIntOrDefault("Total"); note.Player.UpdateBurden(); } }
/// <summary> /// 物品使用时间限制 /// </summary> /// <param name="player"></param> /// <returns></returns> private static int DateLimit(PlayerBusiness player, Variant p) { Variant v = BurdenManager.BurdenPlace(player.B0, p.GetIntOrDefault("P")); if (v == null) { return GoodsReturn.DateLimit1; } string goodsid0 = p.GetStringOrDefault("E"); string goodsid1 = v.GetStringOrDefault("E"); if (string.IsNullOrEmpty(goodsid1)) { return GoodsReturn.DateLimit2; } if (string.IsNullOrEmpty(goodsid0)) { return GoodsReturn.DateLimit3; } if (goodsid0 != goodsid1) { return GoodsReturn.DateLimit4; } if (v.ContainsKey("T")) { //判断物品是否过期 Variant t = v["T"] as Variant; if (t != null && t.ContainsKey("EndTime")) { if (t.GetDateTimeOrDefault("EndTime") <= DateTime.UtcNow) { return GoodsReturn.DateLimit5; } } } return 0; }
/// <summary> /// 角色限制 /// </summary> /// <param name="player"></param> /// <param name="limit"></param> /// <returns></returns> private static int CheckRole(Player player, Variant limit) { if (limit.ContainsKey("RoleID")) { string RoleID = limit.GetStringOrDefault("RoleID"); if (RoleID != "0" && RoleID != player.RoleID) { return GoodsReturn.NoRoleID; } } return 0; }
/// <summary> /// 邀请入家族 /// </summary> /// <param name="note"></param> public static void FamilyInvite(UserNote note) { //被邀请的玩家 string playerid = note.GetString(0); PlayerEx family = note.Player.Family; if (family.Value.GetStringOrDefault("FamilyID") == string.Empty || family.Value.GetStringOrDefault("FamilyID") == null) { note.Call(FamilyCommand.FamilyInviteR, false, TipManager.GetMessage(FamilyReturn.NoAddFamily)); return; } //副簇长,簇长 if (family.Value.GetIntOrDefault("FamilyRolueID") > 1 || family.Value.GetIntOrDefault("FamilyRolueID") < 0) { note.Call(FamilyCommand.FamilyInviteR, false, TipManager.GetMessage(FamilyReturn.NoPower)); return; } Family model = FamilyAccess.Instance.FindOneById(family.Value.GetStringOrDefault("FamilyID")); if (model == null) { note.Call(FamilyCommand.FamilyInviteR, false, TipManager.GetMessage(FamilyReturn.FamilyError)); return; } IList Persons = model.Value.GetValue<IList>("Persons"); //表示已经存在 if (FamilyBase.IsExist(Persons, playerid)) { note.Call(FamilyCommand.FamilyInviteR, false, TipManager.GetMessage(FamilyReturn.FamilyExist)); return; } Variant dy = FamilyBase.FamilyCount(model.Value.GetIntOrDefault("Level")); //家族人数达到上限,不能再邀请 if (Persons.Count >= dy.GetIntOrDefault("Persons")) { note.Call(FamilyCommand.FamilyInviteR, false, TipManager.GetMessage(FamilyReturn.PersonsLimit)); return; } PlayerBusiness OnLineBusiness = PlayersProxy.FindPlayerByID(playerid); if (OnLineBusiness == null) { //邀请入族 //note.Call(FamilyCommand.FamilyInviteR, false, TipManager.GetMessage(FamilyReturn.FamilyExist)); return; } PlayerEx player = OnLineBusiness.Family; if (player == null) { note.Call(FamilyCommand.FamilyInviteR, false, TipManager.GetMessage(FamilyReturn.FamilyError)); return; } if (player.Value.GetStringOrDefault("FamilyID") != string.Empty) { note.Call(FamilyCommand.FamilyInviteR, false, TipManager.GetMessage(FamilyReturn.FamilyExist)); return; } if (family.Value.GetStringOrDefault("FreezeDate") != string.Empty) { DateTime FreezeDate; //被邀请的玩家还处于冻结期 if (DateTime.TryParse(player.Value.GetStringOrDefault("FreezeDate"), out FreezeDate)) { note.Call(FamilyCommand.FamilyInviteR, false, string.Format(TipManager.GetMessage(FamilyReturn.FreezeDate), FreezeDate.ToLocalTime().ToString())); return; } } string invid = family.Value.GetStringOrDefault("FamilyID") + "," + playerid; if (inviteList.ContainsKey(invid)) { Variant v = inviteList[invid] as Variant; if (DateTime.Parse(v.GetStringOrDefault("DateTime")) > DateTime.UtcNow) { //表示已经邀请还没有过期 note.Call(FamilyCommand.FamilyInviteR, false, TipManager.GetMessage(FamilyReturn.IsInvite)); return; } inviteList.Remove(invid); } Variant t = new Variant(); t.Add("SoleID", invid); t.Add("ID", note.PlayerID); t.Add("Name", note.Player.Name); t.Add("FamliyID", family.PlayerID); t.Add("FamliyName", family.Name); t.Add("DateTime", DateTime.UtcNow.AddHours(1)); inviteList.Add(invid, t); Variant tmp = new Variant(); tmp.Add("ID", t.GetStringOrDefault("SoleID")); tmp.Add("Message", string.Format(TipManager.GetMessage(FamilyReturn.InviteFamilySuccess), note.Player.Name, family.Name)); // "【" + t["Name"].ToString() + "】邀请你加入家族【" + t["FamliyName"].ToString() + "】"); if (OnLineBusiness.Online) { //邀请入族 OnLineBusiness.Call(FamilyCommand.FamilyInviteR, true, tmp); } }
private void CreateAction(FightObject[] targetTeam, Variant v, int fightCount) { int actionType = v.GetIntOrDefault("ActionType"); FightAction action = new FightAction((ActionType)actionType, this.ID, 0); action.Parameter = v.GetStringOrDefault("Parameter"); action.SkillLev = v.GetIntOrDefault("Level", 1); //Target 1 自己 //Target 2 队友n //Target 3 敌人n //Target 4 随机友方(n) //Target 5 随机敌人(n) //Target 6 血量最少的敌人(n) int actionTarget = v.GetIntOrDefault("ActionTarget"); if (actionTarget <= 1) { action.Target = this.ID; } else if (actionTarget == 4 || actionTarget == 2) { int index = Sinan.Extensions.NumberRandom.Next(Team.Length); action.Target = Team[index].ID; } else if (actionTarget == 5 || actionTarget == 3) { int index = Sinan.Extensions.NumberRandom.Next(targetTeam.Length); action.Target = targetTeam[index].ID; } else if (actionTarget == 6) { int min = Int32.MaxValue; foreach (var target in targetTeam) { if (target.HP > 0 && target.HP < min) { action.Target = target.ID; } } } else { action.Target = string.Empty; } action.Say = NewTalk(v.GetVariantOrDefault("Talk")); action.FightCount = fightCount; this.m_action = action; }
/// <summary> /// 打指定的怪得到指定的物品给指定的NPC /// </summary> /// <param name="note">角色对象</param> /// <param name="s"></param> public static bool TaskFinish10003(UserNote note, Variant s, int ApcCount) { int m = GameConfigAccess.Instance.GetStactCount(s.GetStringOrDefault("GoodsID")); if (m <= 0) return false; int Lv = s.GetIntOrDefault("GetGoodsLv"); PlayerEx burden = note.Player.B0; IList c = burden.Value.GetValue<IList>("C"); bool ischange = false; for (int i = 0; i < ApcCount; i++) { int total = s.GetIntOrDefault("Total"); int cur = s.GetIntOrDefault("Cur"); if (total <= cur) continue; if (NumberRandom.Next(1, 101) > Lv) continue; Dictionary<string, Variant> dic = new Dictionary<string, Variant>(); Variant v = new Variant(); v.Add("Number1", 1); string goodsid = s.GetStringOrDefault("GoodsID"); dic.Add(goodsid, v); if (BurdenManager.IsFullBurden(burden, dic)) { Variant t = GoodsAccess.Instance.LiaoTianList(TipManager.GetMessage(BurdenReturn.BurdenFull)); note.Call(ClientCommand.SendMsgToAllPlayerR, string.Empty, t); break; } note.Player.AddGoods(dic, GoodsSource.TaskFinish10003); if (dic.Count > 0) { note.Player.AwardGoods.SetOrInc(goodsid, 1); } int number = BurdenManager.BurdenGoodsCount(c, goodsid); s["Cur"] = number >= total ? total : number; burden.Save(); ischange = true; } return ischange; }
/// <summary> /// GM邮件发送 /// </summary> /// <param name="note"></param> /// <returns></returns> public static object GMEmailSend(Notification note) { string title = note.GetString(0); string content = note.GetString(1); //int score = note.GetInt32(2); IList goods = note[2] as IList; if (goods.Count > 5) { return new object[] { false }; } List<Variant> goodsList = new List<Variant>(); foreach (Variant info in goods) { Variant v = new Variant(); v["E"] = info.GetStringOrDefault("GoodsID"); v["G"] = info.GetStringOrDefault("GoodsID"); v["A"] = info.GetIntOrDefault("Number"); v["H"] = info.GetStringOrDefault("IsBinding"); goodsList.Add(v); } IList ms = note[3] as IList; foreach (Variant v in ms) { string playerid = v.GetStringOrDefault("_id"); string name = v.GetStringOrDefault("Name"); int reTime = Convert.ToInt32(TipManager.GetMessage(EmailReturn.HameDay)); if (EmailAccess.Instance.SendEmail(title, TipManager.GetMessage(PetsReturn.StealPet12), playerid, name, content, string.Empty, goodsList, reTime)) { PlayerBusiness pb; if (PlayersProxy.TryGetPlayerByID(Convert.ToInt32(playerid, 16), out pb)) { if (pb != null && pb.Online) { pb.Call(EmailCommand.NewEmailTotalR, EmailAccess.Instance.NewTotal(pb.ID)); } } } } return new object[] { true }; }
/// <summary> /// 获取目的地 /// </summary> /// <param name="point"></param> static Destination InitDestination(Variant point) { if (point != null) { string sceneB = point.GetStringOrDefault("SceneB"); if (!string.IsNullOrEmpty(sceneB)) { return new Destination( sceneB, point.GetIntOrDefault("X"), point.GetIntOrDefault("Y")); } } return null; }
/// <summary> /// 采集物品 /// </summary> /// <param name="note"></param> /// <param name="s"></param> public static bool TaskFinish10009(UserNote note, Variant s, string goodsid) { if (note.Player.SceneID != s.GetStringOrDefault("SceneID")) { note.Call(TaskCommand.TaskCollectR, false, TipManager.GetMessage(TaskReturn.CollectSceneError)); return true; } PlayerEx burden = note.Player.B0; string GoodsID = s.GetStringOrDefault("GoodsID"); if (goodsid != GoodsID) return false; int Total = s.GetIntOrDefault("Total"); int Cur = s.GetIntOrDefault("Cur"); if (Total == Cur) return false; //产生道具数量 int GetGoodsLv = s.GetIntOrDefault("GetGoodsLv"); GetGoodsLv = GetGoodsLv > (Total - Cur) ? (Total - Cur) : GetGoodsLv; Dictionary<string, Variant> dic = new Dictionary<string, Variant>(); Variant v = new Variant(); v.Add("Number1", GetGoodsLv); dic.Add(GoodsID, v); if (BurdenManager.IsFullBurden(burden, dic)) { note.Call(TaskCommand.TaskCollectR, false, TipManager.GetMessage(TaskReturn.BurdenFull)); return true; } s["Cur"] = Cur + GetGoodsLv; note.Player.AddGoods(dic, GoodsSource.TaskFinish10009); return false; }
/// <summary> /// 设置降生信息 /// </summary> public void SetBirthInfo(Variant d) { this.Coin = d.GetInt64OrDefault("Coin"); this.Score = d.GetInt64OrDefault("Score"); this.Bond = d.GetInt64OrDefault("Bond"); this.SceneID = d.GetStringOrDefault("SceneID"); this.X = d.GetIntOrDefault("X"); this.Y = d.GetIntOrDefault("Y"); this.Body = d.GetStringOrDefault("Body"); this.Weapon = d.GetStringOrDefault("Weapon"); this.Mount = d.GetStringOrDefault("Mount"); this.Coat = d.GetStringOrDefault("Coat"); this.IsCoat = d.GetBooleanOrDefault("IsCoat"); }
/// <summary> /// 黄钻奖励 /// </summary> /// <param name="note"></param> /// <param name="part"></param> /// <returns></returns> private static void Yellow(UserNote note, Variant part) { //note.Player.Yellow = 81; string msg = note.GetString(1); string id = part.GetStringOrDefault("ID"); string name = part.GetStringOrDefault("Name"); string subtype = part.GetStringOrDefault("SubType"); string soleid = note.Player.UserID + id; PartBase model = PartAccess.Instance.FindOneById(soleid); if (model == null) { model = new PartBase(); model.ID = soleid; model.Name = name; model.SubType = subtype; model.Created = DateTime.UtcNow; model.PlayerID = note.Player.UserID; model.PartID = id; model.Value = new Variant(); } Variant info = model.Value; DateTime dt = DateTime.UtcNow; Variant v = part.GetVariantOrDefault("Value"); if (v == null) { note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part6)); return; } Variant award = v.GetVariantOrDefault("Award"); if (award == null) { note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part6)); return; } if (note.Player.Yellow <= 0) { note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part14)); return; } if (msg == "n") { //表示领取年费奖励 if (note.Player.Yellow % 10 != 1) { note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part16)); return; } } else { //int lv = 0; //if (!int.TryParse(msg, out lv)) //{ // note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part11)); // return; //} //得到黄钻等级 msg = (note.Player.Yellow / 10).ToString(); } if (info.ContainsKey(msg)) { DateTime awardTime = info.GetDateTimeOrDefault(msg); //表示今日已经领取 if (awardTime.ToLocalTime().Date == dt.ToLocalTime().Date) { note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part5)); return; } } IList select = award.GetValue<IList>(msg); if (select == null) { note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part14)); return; } Variant goods = select[0] as Variant; if (goods == null) { note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part14)); return; } Dictionary<string, Variant> dic = PartAccess.Instance.GetPartAward(goods); if (dic.Count == 0) { note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part6)); return; } PlayerEx b0 = note.Player.B0; if (BurdenManager.IsFullBurden(b0, dic)) { //包袱满不能领取 note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part7)); return; } info[msg] = dt; string t = award.GetStringOrDefault("T"); string m = award.GetStringOrDefault("M"); if (model.Save()) { Dictionary<string, int> gos = note.Player.AddGoods(dic, GoodsSource.Yellow); note.Call(PartCommand.PartExchangeR, true, TipManager.GetMessage(PartReturn.Part15)); PartApprise(note, gos, t, m, false); } else { note.Call(PartCommand.PartExchangeR, false, TipManager.GetMessage(PartReturn.Part14)); } }