public static string EquipItem(string ReqAccount, string ReqChar, string Account, string Character, string Tag, int InventorySlot) { try { string wrURI = baseServerTarget + "equipitem"; string msg = new EquipRequest(ReqChar, ReqAccount, Character, Account, Tag, InventorySlot, SessionId).ToString(); WebRequest wreq = WebRequest.Create(wrURI + "?message=" + msg); wreq.Method = "POST"; wreq.ContentLength = 0; WebResponse wresp = wreq.GetResponse(); using (TextReader sr = new StreamReader(wresp.GetResponseStream())) { XmlSerializer xml = new XmlSerializer(typeof(string), StringNamespace); string resp = (string)xml.Deserialize(sr); return resp; } } catch { } return String.Empty; }
public string EquipItem(string message) { string ret = String.Empty; EquipRequest req = new EquipRequest(message); Account acct = Account.LoadAccount(req.RequestingAccount); if (acct == null) { return "Error: invalid account"; } string ip = (OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty).Address; if (acct.SessionId != req.SessionId || acct.Address != ip) { return "Error: incorrect address or session Id"; } acct.KeepAlive(); Character ch = acct.LoadCharacter(req.RequestingCharacter); if(ch == null) { return "Error: invalid character"; } if(!ch.IsDM) { if(ch.EquipItem(req.InventorySlot, req.Identifier)) { if(req.InventorySlot == (int)InventorySlot.Chest) { if (Map.LoadedMaps.ContainsKey(ch.Map)) { Map.LoadedMaps[ch.Map].ChangeCharacterAppearance(ch); } } return ch.ToString(); } else { return "Error: cannot equip item"; } } else { Account tgAcct = Account.LoadAccount(req.ChangedAccount); if(tgAcct == null) { return "Error: invalid account"; } Character tgCh = tgAcct.LoadCharacter(req.ChangedCharacter); if(tgCh == null) { return "Error: invalid character"; } if(tgCh.EquipItem(req.InventorySlot, req.Identifier)) { return ch.ToString(); } else { return "Error: cannot equip item"; } } }