Ссылка на объект не указывает на экземпляр объекта - C# (186518)

Узнай цену своей работы

Формулировка задачи:

Ссылка на объект не указывает на экземпляр объекта Вот в этих файлах Строка 488 http://pastebin.com/p8MJjEZ8 Строка 21
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using SmartEngine.Network;
  6. using SagaBNS.Common.Packets;
  7. using SagaBNS.CharacterServer.Network.Client;
  8. namespace SagaBNS.CharacterServer.Packets.Client
  9. {
  10. public class CM_ACTOR_INFO_REQUEST : SagaBNS.Common.Packets.CharacterServer.CM_ACTOR_INFO_REQUEST
  11. {
  12. public override Packet<CharacterPacketOpcode> New()
  13. {
  14. return new CM_ACTOR_INFO_REQUEST();
  15. }
  16. public override void OnProcess(Session<CharacterPacketOpcode> client)
  17. {
  18. ((CharacterSession)client).OnActorInfoRequest(this);
  19. }
  20. }
  21. }
Строка 22
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using SmartEngine.Core;
  6. using SmartEngine.Network;
  7. using SagaBNS.Common.Packets;
  8. using SagaBNS.Common.Packets.CharacterServer;
  9. using SagaBNS.Common.Actors;
  10. using SagaBNS.CharacterServer.Database;
  11. using SagaBNS.CharacterServer.Cache;
  12. namespace SagaBNS.CharacterServer.Network.Client
  13. {
  14. public partial class CharacterSession : Session<CharacterPacketOpcode>
  15. {
  16. public void OnActorInfoRequest(Packets.Client.CM_ACTOR_INFO_REQUEST p)
  17. {
  18. SM_ACTOR_INFO r= new SM_ACTOR_INFO();
  19. r.SessionID = p.SessionID;
  20. r.Character = CharacterCache.Instance[p.CharID];
  21. this.Network.SendPacket(r);
  22. }
  23. public void OnCharListRequest(Packets.Client.CM_CHAR_LIST_REQUEST p)
  24. {
  25. Logger.ShowInfo(string.Format(this + ":Player is requesting char list for account ID:{0}", p.AccountID));
  26. SM_CHAR_LIST p1 = new SM_CHAR_LIST();
  27. p1.SessionID = p.SessionID;
  28. List<uint> ids = CharacterDB.Instance.GetCharIDs(p.AccountID);
  29. foreach(uint i in CharacterCache.Instance.GetCharIDsForAccount(p.AccountID))
  30. {
  31. if(!ids.Contains(i))
  32. ids.Add(i);
  33. }
  34. List<ActorPC> res = new List<ActorPC>();
  35. foreach (uint i in ids)
  36. {
  37. ActorPC pc = CharacterCache.Instance[i];
  38. if (pc != null)
  39. res.Add(pc);
  40. }
  41. p1.Characters = res;
  42. Logger.ShowInfo(string.Format(this + ":Got {0} Characters", res.Count));
  43. this.Network.SendPacket(p1);
  44. }
  45. public void OnCharCreate(Packets.Client.CM_CHAR_CREATE p)
  46. {
  47. SM_CHAR_CREATE_RESULT p1 = new SM_CHAR_CREATE_RESULT();
  48. p1.SessionID = p.SessionID;
  49. ActorPC chara = p.Character;
  50. if (CharacterDB.Instance.CheckExists(chara.Name, chara.WorldID))
  51. {
  52. p1.Result = SM_CHAR_CREATE_RESULT.Results.ERROR;
  53. p1.CharID = p.Character.CharID;
  54. }
  55. else
  56. {
  57. p1.Result = SM_CHAR_CREATE_RESULT.Results.OK;
  58. p1.CharID = CharacterCache.Instance.Create(p.Character);
  59. }
  60. this.Network.SendPacket(p1);
  61. }
  62. public void OnCharSave(Packets.Client.CM_CHAR_SAVE p)
  63. {
  64. ActorPC pc = p.Character;
  65. BackupData(pc,CharacterCache.Instance[pc.CharID]);
  66. CharacterCache.Instance.Save(pc.CharID, pc);
  67. }
  68. public void OnCharDelete(Packets.Client.CM_CHAR_DELETE p)
  69. {
  70. Logger.ShowInfo(string.Format("Requested deletion of character ID {0}", p.CharID));
  71. CharacterCache.Instance.Delete(p.CharID);
  72. SM_CHAR_DELETE_RESULT p1 = new SM_CHAR_DELETE_RESULT();
  73. p1.SessionID = p.SessionID;
  74. p1.Result = SM_CHAR_DELETE_RESULT.Results.OK;
  75. this.Network.SendPacket(p1);
  76. }
  77. void BackupData(ActorPC newPC,ActorPC oldPC)
  78. {
  79. if (oldPC == null)
  80. return;
  81. newPC.Quests = oldPC.Quests;
  82. newPC.QuestsCompleted = oldPC.QuestsCompleted;
  83. newPC.Skills = oldPC.Skills;
  84. newPC.Locations = oldPC.Locations;
  85. }
  86. }
  87. }
Строка 78
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using SmartEngine.Network;
  6. using SagaBNS.Common.Actors;
  7. using SagaBNS.Common.Network;
  8. namespace SagaBNS.Common.Packets.CharacterServer
  9. {
  10. public class SM_ACTOR_INFO : Packet<CharacterPacketOpcode>
  11. {
  12. internal class SM_ACTOR_INFO_INTERNAL<T> : SM_ACTOR_INFO
  13. {
  14. public override Packet<CharacterPacketOpcode> New()
  15. {
  16. return new SM_ACTOR_INFO_INTERNAL<T>();
  17. }
  18. public override void OnProcess(Session<CharacterPacketOpcode> client)
  19. {
  20. ((CharacterSession<T>)client).OnActorInfo(this);
  21. }
  22. }
  23. public SM_ACTOR_INFO()
  24. {
  25. this.ID = CharacterPacketOpcode.SM_ACTOR_INFO;
  26. }
  27. public long SessionID
  28. {
  29. get
  30. {
  31. return GetLong(2);
  32. }
  33. set
  34. {
  35. PutLong(value, 2);
  36. }
  37. }
  38. public ActorPC Character
  39. {
  40. get
  41. {
  42. ActorPC pc = new ActorPC();
  43. pc.CharID = GetUInt();
  44. pc.AccountID = GetUInt();
  45. pc.SlotID = GetByte();
  46. pc.WorldID = GetByte();
  47. pc.Name = GetString();
  48. pc.Level = GetByte();
  49. pc.Exp = GetUInt();
  50. pc.Race = (Race)GetByte();
  51. pc.Gender = (Gender)GetByte();
  52. pc.Job = (Job)GetByte();
  53. pc.Appearence1 = GetBytes(GetByte());
  54. pc.Appearence2 = GetBytes(GetByte());
  55. pc.UISettings = GetString();
  56. pc.PartyID = GetULong();
  57. pc.Offline = GetByte() == 1;
  58. pc.Exp = GetUInt();
  59. pc.HP = GetInt();
  60. pc.MP = GetUShort();
  61. pc.MaxHP = GetInt();
  62. pc.MaxMP = GetUShort();
  63. pc.Gold = GetInt();
  64. pc.MapID = GetUInt();
  65. pc.X = GetShort();
  66. pc.Y = GetShort();
  67. pc.Z = GetShort();
  68. pc.Dir = GetUShort();
  69. pc.InventorySize = GetByte();
  70. return pc;
  71. }
  72. set
  73. {
  74. PutUInt(value.CharID);
  75. PutUInt(value.AccountID);
  76. PutByte(value.SlotID);
  77. PutByte(value.WorldID);
  78. PutString(value.Name);
  79. PutByte(value.Level);
  80. PutUInt(value.Exp);
  81. PutByte((byte)value.Race);
  82. PutByte((byte)value.Gender);
  83. PutByte((byte)value.Job);
  84. PutByte((byte)value.Appearence1.Length);
  85. PutBytes(value.Appearence1);
  86. PutByte((byte)value.Appearence2.Length);
  87. PutBytes(value.Appearence2);
  88. PutString(value.UISettings);
  89. PutULong(value.PartyID);
  90. PutByte(value.Offline ? (byte)1 : (byte)0);
  91. PutUInt(value.Exp);
  92. PutInt(value.HP);
  93. PutUShort((ushort)value.MP);
  94. PutInt(value.MaxHP);
  95. PutUShort(value.MaxMP);
  96. PutInt(value.Gold);
  97. PutUInt(value.MapID);
  98. PutShort((short)value.X);
  99. PutShort((short)value.Y);
  100. PutShort((short)value.Z);
  101. PutUShort(value.Dir);
  102. PutByte(value.InventorySize);
  103. }
  104. }
  105. }
  106. }

Решение задачи: «Ссылка на объект не указывает на экземпляр объекта»

textual
Листинг программы
  1. OnActorInfoRequest

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы