BattleEventsB2C.cs 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434
  1. using CommonAI.data;
  2. using CommonAI.Data;
  3. using CommonAI.Zone;
  4. using CommonAI.Zone.Instance;
  5. using CommonLang.IO;
  6. using CommonLang.IO.Attribute;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using XmdsCommon.Plugin;
  12. namespace XmdsCommon.Message
  13. {
  14. /// <summary>
  15. /// 战斗状态改变事件.
  16. /// </summary>
  17. [MessageType(0x9001001)]
  18. public class CombatStateChangeEvent : ObjectEvent
  19. {
  20. private BattleStatus mCurState = BattleStatus.None;
  21. public BattleStatus CurState { get { return mCurState; } }
  22. public CombatStateChangeEvent() { }
  23. public CombatStateChangeEvent(uint unit_id, BattleStatus state) : base(unit_id) { mCurState = state; }
  24. public override void WriteExternal(IOutputStream output)
  25. {
  26. base.WriteExternal(output);
  27. output.PutEnum8(mCurState);
  28. }
  29. public override void ReadExternal(IInputStream input)
  30. {
  31. base.ReadExternal(input);
  32. mCurState = input.GetEnum8<BattleStatus>();
  33. }
  34. }
  35. /// <summary>
  36. /// 跳战斗数字.
  37. /// </summary>
  38. [MessageType(0xF000010)]
  39. public class BattleHintNumberB2C : PlayerEvent
  40. {
  41. public uint TargetObjID;
  42. public int Value;
  43. public byte State;
  44. public BattleHintNumberB2C() { }
  45. public BattleHintNumberB2C(uint objId, int hp, byte state)
  46. {
  47. TargetObjID = objId;
  48. Value = hp;
  49. State = state;
  50. }
  51. override public void WriteExternal(IOutputStream output)
  52. {
  53. base.WriteExternal(output);
  54. output.PutU32(TargetObjID);
  55. output.PutS32(Value);
  56. output.PutU8(State);
  57. }
  58. override public void ReadExternal(IInputStream input)
  59. {
  60. base.ReadExternal(input);
  61. TargetObjID = input.GetU32();
  62. Value = input.GetS32();
  63. State = input.GetU8();
  64. }
  65. }
  66. /// <summary>
  67. /// 玩家外观变更消息
  68. /// </summary>
  69. [MessageType(0xF000001)]
  70. public class PlayAvatarEventB2C : ObjectEvent
  71. {
  72. public List<XmdsAvatarInfo> AvatarList = null;
  73. public PlayAvatarEventB2C() { }
  74. public PlayAvatarEventB2C(List<XmdsAvatarInfo> avatar)
  75. {
  76. AvatarList = avatar;
  77. }
  78. public PlayAvatarEventB2C(uint unit_id, List<XmdsAvatarInfo> avatar)
  79. : base(unit_id)
  80. {
  81. AvatarList = avatar;
  82. }
  83. override public void WriteExternal(IOutputStream output)
  84. {
  85. base.WriteExternal(output);
  86. output.PutList<XmdsAvatarInfo>(AvatarList, output.PutExt);
  87. }
  88. override public void ReadExternal(IInputStream input)
  89. {
  90. base.ReadExternal(input);
  91. AvatarList = input.GetList<XmdsAvatarInfo>(input.GetExt<XmdsAvatarInfo>);
  92. }
  93. }
  94. /// <summary>
  95. /// 能够同步给给客户端的数据.
  96. /// </summary>
  97. [MessageType(0xF000008)]
  98. public class PlayerVisibleDataB2C : IExternalizable, CommonAI.ZoneClient.IUnitVisibleData
  99. {
  100. /// <summary>
  101. /// 单位基础信息.
  102. /// </summary>
  103. public XmdsUnitBaseInfo BaseInfo = new XmdsUnitBaseInfo();
  104. /// <summary>
  105. ///装备时装信息.
  106. /// </summary>
  107. public List<XmdsAvatarInfo> AvatarList = new List<XmdsAvatarInfo>();
  108. /// <summary>
  109. /// 单位PK相关数据.
  110. /// </summary>
  111. public PKInfo UnitPKInfo = null;
  112. /// <summary>
  113. ///动态场景相关信息.
  114. /// </summary>
  115. public SceneInfo UnitSceneInfo = null;
  116. public void WriteExternal(IOutputStream output)
  117. {
  118. output.PutExt(this.BaseInfo);
  119. output.PutList(this.AvatarList, output.PutExt);
  120. output.PutExt(this.UnitPKInfo);
  121. output.PutExt(this.UnitSceneInfo);
  122. }
  123. public void ReadExternal(IInputStream input)
  124. {
  125. this.BaseInfo = input.GetExt<XmdsUnitBaseInfo>();
  126. this.AvatarList = input.GetList<XmdsAvatarInfo>(input.GetExt<XmdsAvatarInfo>);
  127. this.UnitPKInfo = input.GetExt<PKInfo>();
  128. this.UnitSceneInfo = input.GetExt<SceneInfo>();
  129. }
  130. public void setVisibleName(String name) { }
  131. public void setVisibleCardData(ICardData datas) { }
  132. }
  133. [MessageType(0xF000023)]
  134. public class PlayerGotItemB2C : PlayerEvent
  135. {
  136. public string IconName;//tcCode
  137. public int Qty;//数量.
  138. public int Quality;//品质.
  139. public object Clone()
  140. {
  141. PlayerGotItemB2C ret = new PlayerGotItemB2C();
  142. ret.IconName = IconName;
  143. ret.Qty = Qty;
  144. ret.Quality = Quality;
  145. return ret;
  146. }
  147. override public void WriteExternal(IOutputStream output)
  148. {
  149. base.WriteExternal(output);
  150. output.PutUTF(IconName);
  151. output.PutS32(Qty);
  152. output.PutS32(Quality);
  153. }
  154. override public void ReadExternal(IInputStream input)
  155. {
  156. base.ReadExternal(input);
  157. IconName = input.GetUTF();
  158. Qty = input.GetS32();
  159. Quality = input.GetS32();
  160. }
  161. }
  162. [MessageType(0xF000006)]
  163. public class DropItem : ICloneable, IExternalizable
  164. {
  165. public string ObjID;
  166. public string Name;
  167. public string FileName;//
  168. public int Qty;//数量.
  169. public int TTL;//存在时间.
  170. public int Quality;//品质.
  171. public int TemplateID;//模板ID
  172. public int FreezeTime;//不可捡时间时间.
  173. public int ProtectTime;//保护时间.
  174. public List<string> PlayerUUID;//哪个玩家掉的.
  175. public string IconName;//图标.
  176. public byte Mode;//拾取模式.
  177. public float OriginX;//初始坐标X.
  178. public float OriginY;//初始坐标Y.
  179. public int createTime; //创建时间
  180. public String code; //道具code
  181. //道具绑定玩家id,只有该玩家可见,可拾取
  182. public string bindPlayerId;
  183. public object Clone()
  184. {
  185. DropItem ret = new DropItem();
  186. ret.ObjID = ObjID;
  187. ret.Name = Name;
  188. ret.FileName = FileName;
  189. ret.Qty = Qty;
  190. ret.TTL = TTL;
  191. ret.Quality = Quality;
  192. ret.TemplateID = TemplateID;
  193. ret.FreezeTime = FreezeTime;
  194. ret.ProtectTime = ProtectTime;
  195. ret.PlayerUUID = PlayerUUID;
  196. ret.IconName = IconName;
  197. ret.Mode = Mode;
  198. ret.OriginX = OriginX;
  199. ret.OriginY = OriginY;
  200. ret.code = this.code;
  201. ret.bindPlayerId = this.bindPlayerId;
  202. ret.createTime = this.createTime;
  203. return ret;
  204. }
  205. public void WriteExternal(IOutputStream output)
  206. {
  207. output.PutUTF(ObjID);
  208. output.PutUTF(Name);
  209. output.PutUTF(FileName);
  210. output.PutS32(Qty);
  211. output.PutS32(TTL);
  212. output.PutS32(Quality);
  213. output.PutS32(TemplateID);
  214. output.PutS32(FreezeTime);
  215. output.PutS32(ProtectTime);
  216. output.PutList<string>(PlayerUUID, output.PutUTF);
  217. output.PutUTF(IconName);
  218. output.PutU8(Mode);
  219. output.PutF32(OriginX);
  220. output.PutF32(OriginY);
  221. output.PutUTF(this.code);
  222. output.PutS32(this.createTime);
  223. }
  224. public void ReadExternal(IInputStream input)
  225. {
  226. ObjID = input.GetUTF();
  227. Name = input.GetUTF();
  228. FileName = input.GetUTF();
  229. Qty = input.GetS32();
  230. TTL = input.GetS32();
  231. Quality = input.GetS32();
  232. TemplateID = input.GetS32();
  233. FreezeTime = input.GetS32();
  234. ProtectTime = input.GetS32();
  235. PlayerUUID = input.GetUTFList();
  236. IconName = input.GetUTF();
  237. Mode = input.GetU8();
  238. OriginX = input.GetF32();
  239. OriginY = input.GetF32();
  240. this.code = input.GetUTF();
  241. this.createTime = input.GetS32();
  242. }
  243. }
  244. [MessageType(0xF000011)]
  245. public class ScriptAddUnitEventsB2C : ZoneEvent
  246. {
  247. public uint ObjectID;
  248. public int TemplateID;
  249. public float X;
  250. public float Y;
  251. public ScriptAddUnitEventsB2C() { }
  252. public ScriptAddUnitEventsB2C(InstanceUnit unit)
  253. {
  254. this.ObjectID = unit.ID;
  255. this.TemplateID = unit.Info.ID;
  256. this.X = unit.X;
  257. this.Y = unit.Y;
  258. }
  259. public override void WriteExternal(IOutputStream output)
  260. {
  261. output.PutU32(this.ObjectID);
  262. output.PutS32(this.TemplateID);
  263. output.PutF32(this.X);
  264. output.PutF32(this.Y);
  265. }
  266. public override void ReadExternal(IInputStream input)
  267. {
  268. this.ObjectID = input.GetU32();
  269. this.TemplateID = input.GetS32();
  270. this.X = input.GetF32();
  271. this.Y = input.GetF32();
  272. }
  273. }
  274. [MessageType(0xF000012)]
  275. public class ScriptRemoveUnitEventsB2C : ZoneEvent
  276. {
  277. public uint ObjectID;
  278. public int TemplateID;
  279. public ScriptRemoveUnitEventsB2C() { }
  280. public ScriptRemoveUnitEventsB2C(InstanceUnit unit)
  281. {
  282. this.ObjectID = unit.ID;
  283. this.TemplateID = unit.Info.ID;
  284. }
  285. public override void WriteExternal(IOutputStream output)
  286. {
  287. output.PutU32(this.ObjectID);
  288. output.PutS32(this.TemplateID);
  289. }
  290. public override void ReadExternal(IInputStream input)
  291. {
  292. this.ObjectID = input.GetU32();
  293. this.TemplateID = input.GetS32();
  294. }
  295. }
  296. /// <summary>
  297. /// 基础数据更新主要是等级和VIP消息
  298. /// </summary>
  299. [MessageType(0xF000002)]
  300. public class XmdsUnitBaseInfoEventB2C : ObjectEvent
  301. {
  302. public XmdsUnitBaseInfo Props = null;
  303. public XmdsUnitBaseInfoEventB2C() { }
  304. public XmdsUnitBaseInfoEventB2C(XmdsUnitBaseInfo props)
  305. {
  306. Props = props;
  307. }
  308. public XmdsUnitBaseInfoEventB2C(uint unit_id, XmdsUnitBaseInfo props)
  309. : base(unit_id)
  310. {
  311. Props = props;
  312. }
  313. override public void WriteExternal(IOutputStream output)
  314. {
  315. base.WriteExternal(output);
  316. output.PutExt(Props);
  317. }
  318. override public void ReadExternal(IInputStream input)
  319. {
  320. base.ReadExternal(input);
  321. Props = input.GetExt<XmdsUnitBaseInfo>();
  322. }
  323. }
  324. /// <summary>
  325. /// 属性更新的消息
  326. /// </summary>
  327. [MessageType(0xF000003)]
  328. public class XmdsUnitPropEventB2C : PlayerEvent
  329. {
  330. public XmdsUnitProp Props = null;
  331. public XmdsUnitPropEventB2C() { }
  332. public XmdsUnitPropEventB2C(XmdsUnitProp props)
  333. {
  334. Props = props;
  335. }
  336. public XmdsUnitPropEventB2C(uint unit_id, XmdsUnitProp props)
  337. : base(unit_id)
  338. {
  339. Props = props;
  340. }
  341. override public void WriteExternal(IOutputStream output)
  342. {
  343. base.WriteExternal(output);
  344. output.PutExt(Props);
  345. }
  346. override public void ReadExternal(IInputStream input)
  347. {
  348. base.ReadExternal(input);
  349. Props = input.GetExt<XmdsUnitProp>();
  350. }
  351. }
  352. /// <summary>
  353. /// 战斗服提示信息.
  354. /// </summary>
  355. [MessageType(0xF000014)]
  356. public class ShowTipsEventB2C : PlayerEvent
  357. {
  358. public string Msg = null;
  359. public override void WriteExternal(IOutputStream output)
  360. {
  361. base.WriteExternal(output);
  362. output.PutUTF(Msg);
  363. }
  364. public override void ReadExternal(IInputStream input)
  365. {
  366. base.ReadExternal(input);
  367. Msg = input.GetUTF();
  368. }
  369. }
  370. /// <summary>
  371. /// 怪物扩展数据.
  372. /// </summary>
  373. [MessageType(0xF000015)]
  374. public class MonsterVisibleDataB2C : IExternalizable, CommonAI.ZoneClient.IUnitVisibleData
  375. {
  376. /// <summary>
  377. /// 怪物类型:0:普通怪,1:稀有怪,2:首脑怪,3:精英怪,4:BOSS.
  378. /// </summary>
  379. public enum MonsterType : byte
  380. {
  381. MType0 = 0,
  382. MType1 = 1,
  383. MType2 = 2,
  384. MType3 = 3, //精英
  385. MType4 = 4, //boss
  386. MType5 = 5,
  387. MType6 = 6,
  388. }
  389. /// <summary>
  390. /// 怪物名字颜色:0:白色,默认颜色1:绿色,优秀2: 蓝色,精良3: 紫色,史诗4: 橙色,传说5: 红色,顶级.6:澄绿色
  391. /// </summary>
  392. public enum MonsterQcolor : byte
  393. {
  394. Q0 = 0,
  395. Q1 = 1,
  396. Q2 = 2,
  397. Q3 = 3,
  398. Q4 = 4,
  399. Q5 = 5,
  400. Q6 = 6,
  401. }
  402. /// <summary>
  403. /// 单位种族.
  404. /// </summary>
  405. public enum MonsterAtype : byte
  406. {
  407. Human = 0,
  408. Monster = 1,
  409. UnDead = 2,
  410. Evil = 3,
  411. Other = 9,
  412. }
  413. /// <summary>
  414. /// 攻击类型.
  415. /// </summary>
  416. public enum MonsterAttackType : byte
  417. {
  418. Passive = 0,//被动攻击.
  419. Active = 1,//主动攻击.
  420. }
  421. /// <summary>
  422. /// 归属者信息.
  423. /// </summary>
  424. [MessageType(0xF000030)]
  425. public class HeirInfo : IExternalizable
  426. {
  427. public string Name;
  428. public int hpPercent;
  429. public CommonAI.Data.XmdsUnitPro ProType;
  430. public void ReadExternal(IInputStream input)
  431. {
  432. Name = input.GetUTF();
  433. hpPercent = input.GetS32();
  434. ProType = input.GetEnum8<CommonAI.Data.XmdsUnitPro>();
  435. }
  436. public void WriteExternal(IOutputStream output)
  437. {
  438. output.PutUTF(Name);
  439. output.PutS32(hpPercent);
  440. output.PutEnum8<CommonAI.Data.XmdsUnitPro>(ProType);
  441. }
  442. }
  443. public int MonsterID;
  444. public string DisplayName;
  445. public string Title;
  446. public MonsterAtype Atype;
  447. public MonsterQcolor Qcolor;
  448. public MonsterType MType;
  449. public MonsterAttackType AttackType;
  450. public string SenceType = null;
  451. public HeirInfo UnitHeirInfo = null;
  452. //血条层数
  453. public byte hpPlies = 1;
  454. //卡牌数据
  455. private ICardData cardInterface;
  456. public CardType[] cardData; //0-3代表有
  457. public void setVisibleName(String name)
  458. {
  459. if(name != null && name.Length > 0)
  460. {
  461. this.DisplayName = name;
  462. }
  463. }
  464. public void setVisibleCardData(ICardData datas)
  465. {
  466. this.cardInterface = datas;
  467. }
  468. public void WriteExternal(IOutputStream output)
  469. {
  470. output.PutS32(MonsterID);
  471. output.PutUTF(DisplayName);
  472. output.PutEnum8(Atype);
  473. output.PutEnum8(Qcolor);
  474. output.PutEnum8(MType);
  475. output.PutEnum8(AttackType);
  476. output.PutUTF(SenceType);
  477. output.PutUTF(Title);
  478. output.PutExt(UnitHeirInfo);
  479. output.PutU8(hpPlies);
  480. if (this.MType >= MonsterType.MType4)
  481. {
  482. for (int i = 0; i < (int)CardType.Max; i++)
  483. {
  484. CardType testType = cardInterface == null ? CardType.Max : cardInterface.GetCardData(i);
  485. output.PutEnum8(cardInterface == null ? CardType.Max : cardInterface.GetCardData(i));
  486. //System.Console.WriteLine("boss数据:" + testType);
  487. }
  488. }
  489. }
  490. public void ReadExternal(IInputStream input)
  491. {
  492. MonsterID = input.GetS32();
  493. DisplayName = input.GetUTF();
  494. Atype = input.GetEnum8<MonsterAtype>();
  495. Qcolor = input.GetEnum8<MonsterQcolor>();
  496. MType = input.GetEnum8<MonsterType>();
  497. AttackType = input.GetEnum8<MonsterAttackType>();
  498. SenceType = input.GetUTF();
  499. Title = input.GetUTF();
  500. UnitHeirInfo = input.GetExt<HeirInfo>();
  501. hpPlies = input.GetU8();
  502. if (this.MType >= MonsterType.MType4)
  503. {
  504. cardData = new CardType[(int)CardType.Max];
  505. for (int i = 0; i < (int)CardType.Max; i++)
  506. {
  507. cardData[i] = input.GetEnum8<CardType>();
  508. //System.Console.WriteLine("boss数据:" + cardData[i]);
  509. }
  510. }
  511. }
  512. }
  513. /// <summary>
  514. /// 单位PK等级改变通知.
  515. /// </summary>
  516. [MessageType(0xF000019)]
  517. public class PlayerPKLvChangeEventB2C : ObjectEvent
  518. {
  519. public PKLevel CurLv = PKLevel.White;
  520. public override void WriteExternal(IOutputStream output)
  521. {
  522. base.WriteExternal(output);
  523. output.PutEnum8(CurLv);
  524. }
  525. public override void ReadExternal(IInputStream input)
  526. {
  527. base.ReadExternal(input);
  528. CurLv = input.GetEnum8<PKLevel>();
  529. }
  530. }
  531. /// <summary>
  532. /// PK值变更通知.
  533. /// </summary>
  534. [MessageType(0xF00001E)]
  535. public class PlayerPKValueChangeEventB2C : PlayerEvent
  536. {
  537. /// <summary>
  538. /// 当前PK值.
  539. /// </summary>
  540. public int CurPKValue;
  541. public override void WriteExternal(IOutputStream output)
  542. {
  543. base.WriteExternal(output);
  544. output.PutS32(CurPKValue);
  545. }
  546. public override void ReadExternal(IInputStream input)
  547. {
  548. base.ReadExternal(input);
  549. CurPKValue = input.GetS32();
  550. }
  551. }
  552. /// <summary>
  553. /// 召唤物客户端同步信息.
  554. /// </summary>
  555. [MessageType(0xF00001A)]
  556. public class SummonUnitVisibleDataB2C : IExternalizable, CommonAI.ZoneClient.IUnitVisibleData
  557. {
  558. /// <summary>
  559. /// 宿主ID.
  560. /// </summary>
  561. public uint MasterObjID = 0;
  562. //召唤物模型信息。如果不为空,则替换之前获取模型的逻辑
  563. public List<XmdsAvatarInfo> AvatarList = null;
  564. public void ReadExternal(IInputStream input)
  565. {
  566. this.MasterObjID = input.GetU32();
  567. this.AvatarList = input.GetList<XmdsAvatarInfo>(input.GetExt<XmdsAvatarInfo>);
  568. }
  569. public void WriteExternal(IOutputStream output)
  570. {
  571. output.PutU32(MasterObjID);
  572. output.PutList(this.AvatarList, output.PutExt);
  573. }
  574. public void setVisibleName(String name) {}
  575. public void setVisibleCardData(ICardData datas) { }
  576. }
  577. /// <summary>
  578. /// 同步队友信息.
  579. /// </summary>
  580. [MessageType(0xF00001C)]
  581. public class PlayerTeamIntoEventB2C : PlayerEvent
  582. {
  583. public List<string> Members;
  584. public override void WriteExternal(IOutputStream output)
  585. {
  586. base.WriteExternal(output);
  587. output.PutList<string>(Members, output.PutUTF);
  588. }
  589. public override void ReadExternal(IInputStream input)
  590. {
  591. base.ReadExternal(input);
  592. Members = input.GetUTFList();
  593. }
  594. }
  595. /// <summary>
  596. /// 单位战斗属性同步.
  597. /// </summary>
  598. [MessageType(0xF00001D)]
  599. public class PlayerBattlePropChangeEventB2C : UnitAttrMaskType
  600. {
  601. public ulong Mask = 0;
  602. //最大血量.
  603. public int MaxHP = 100;
  604. //移动速度(最终值)
  605. public float MoveSpeed = 7;
  606. //移动速度加成
  607. public int MoveSpeedAddition = 0;
  608. //血量恢复值.
  609. public int HPReborn = 10;
  610. //同步Attribute
  611. //生命增加百分比
  612. public int HPPer = 0;
  613. //攻击
  614. public int Attack = 0;
  615. //攻击增加百分比
  616. public int AttackPer = 0;
  617. //防御
  618. public int Def = 0;
  619. //防御增加百分比
  620. public int DefPer = 0;
  621. //穿透增加百分比
  622. public int IgnoreDefensePer = 0;
  623. //暴击率
  624. public int CritRate = 0;
  625. //抗暴率
  626. public int ResCritRate = 0;
  627. //暴击伤害叠加百分比
  628. public int CritDamage = 0;
  629. //伤害增加百分比(玩家之间)
  630. public int IncAllDamage = 0;
  631. //伤害减免百分比(玩家之间)
  632. public int AllDamageReduce = 0;
  633. //韧性
  634. public int CtrlTimeReduce = 0;
  635. //冷却缩减
  636. public int SkillCD = 0;
  637. //治疗效果
  638. public int HealEffect = 0;
  639. //被治疗效果
  640. public int HealedEffect = 0;
  641. //技能加成
  642. public int SkillDamage = 0;
  643. //攻击速度
  644. public int AttackSpeed = 0;
  645. //控制增幅
  646. public int ControlUp = 0;
  647. //金属性攻击
  648. public int GoldAttack = 0;
  649. //金属性防御
  650. public int GoldDefense = 0;
  651. //木属性攻击
  652. public int WoodAttack = 0;
  653. //木属性防御
  654. public int WoodDefense = 0;
  655. //水属性攻击
  656. public int WaterAttack = 0;
  657. //水属性防御
  658. public int WaterDefense = 0;
  659. //火属性攻击
  660. public int FireAttack = 0;
  661. //火属性防御
  662. public int FireDefense = 0;
  663. //土属性攻击
  664. public int SoilAttack = 0;
  665. //土属性防御
  666. public int SoilDefense = 0;
  667. //对Boss额外暴击率
  668. public int ToBossCritRate = 0;
  669. //对Boss额外暴击伤害
  670. public int ToBossCritDamage = 0;
  671. //金克制
  672. public int GoldRestraint = 0;
  673. //木克制
  674. public int WoodRestraint = 0;
  675. //水克制
  676. public int WaterRestraint = 0;
  677. //火克制
  678. public int FireRestraint = 0;
  679. //土克制
  680. public int SoilRestraint = 0;
  681. //金抵御
  682. public int GoldResist = 0;
  683. //木抵御
  684. public int WoodResist = 0;
  685. //水抵御
  686. public int WaterResist = 0;
  687. //火抵御
  688. public int FireResist = 0;
  689. //土抵御
  690. public int SoilResist = 0;
  691. //杀意值
  692. public int PvpKillValue = 0;
  693. //妖气等级
  694. public int YaoQiLevel = 0;
  695. //普攻吸血
  696. public int NormalAtkLeech = 0;
  697. //技能吸血
  698. public int ActiveAtkLeech = 0;
  699. //神器主属性伤害加成
  700. public int ArtifactMainPer = 0;
  701. //最大生命值(ext, 暂时仅角色面板显示)
  702. public int MaxHPExt = 0;
  703. /// 野外boss伤害增益
  704. public int FieldBossDamageAdd;
  705. /// 副本小怪伤害增益
  706. public int DungeonMonsterDamageAdd;
  707. //妖兽破定效率
  708. public int breakShieldValue;
  709. public int[] MonsterRestraint = new int[(int)UnitFateType.Five];
  710. //猎妖属性
  711. public int monsterAtk; // 猎妖攻
  712. public int monsterDef; // 猎妖防
  713. public int monsterAtkPer; // 猎妖攻百分比
  714. public int monsterDefPer; // 猎妖防百分比
  715. public override void WriteExternal(IOutputStream output)
  716. {
  717. base.WriteExternal(output);
  718. output.PutU64(Mask);
  719. if (Mask == 0) { return; }
  720. if ((Mask & MASK_MAX_HP) != 0) output.PutS32(MaxHP);
  721. if ((Mask & MASK_MOVE_SPEED) != 0) output.PutF32(MoveSpeed);
  722. if ((Mask & MASK_HP_REBORN) != 0) output.PutS32(HPReborn);
  723. //同步Attribute
  724. if ((Mask & MASK_HP_PER) != 0) output.PutS32(HPPer);
  725. if ((Mask & MASK_ATTACK) != 0) output.PutS32(Attack);
  726. if ((Mask & MASK_ATTACK_PER) != 0) output.PutS32(AttackPer);
  727. if ((Mask & MASK_DEF) != 0) output.PutS32(Def);
  728. if ((Mask & MASK_DEF_PER) != 0) output.PutS32(DefPer);
  729. if ((Mask & MASK_IGNORE_DEFENSE_PER) != 0) output.PutS32(IgnoreDefensePer);
  730. if ((Mask & MASK_CRIT_RATE) != 0) output.PutS32(CritRate);
  731. if ((Mask & MASK_CRIT_DAMAGE) != 0) output.PutS32(CritDamage);
  732. if ((Mask & MASK_INCALLDAMAGE) != 0) output.PutS32(IncAllDamage);
  733. if ((Mask & MASK_ALL_DAMAGE_REDUCE) != 0) output.PutS32(AllDamageReduce);
  734. if ((Mask & MASK_CTRLTIME_REDUCE) != 0) output.PutS32(CtrlTimeReduce);
  735. if ((Mask & MASK_SKILL_CD) != 0) output.PutS32(SkillCD);
  736. if ((Mask & MASK_HEALEFFECT) != 0) output.PutS32(HealEffect);
  737. if ((Mask & MASK_HEALEDEFFECT) != 0) output.PutS32(HealedEffect);
  738. if ((Mask & MASK_SKILLDAMAGE) != 0) output.PutS32(SkillDamage);
  739. if ((Mask & MASK_ATTACK_SPEED) != 0) output.PutS32(AttackSpeed);
  740. if ((Mask & MASK_CONTROL_UP) != 0) output.PutS32(ControlUp);
  741. if ((Mask & MASK_RES_CRIT_RATE) != 0) output.PutS32(this.ResCritRate);
  742. if ((Mask & MASK_GOLD_ATTACK) != 0) output.PutS32(GoldAttack);
  743. if ((Mask & MASK_GOLD_DEFENSE) != 0) output.PutS32(GoldDefense);
  744. if ((Mask & MASK_WOOD_ATTACK) != 0) output.PutS32(WoodAttack);
  745. if ((Mask & MASK_WOOD_DEFENSE) != 0) output.PutS32(WoodDefense);
  746. if ((Mask & MASK_WATER_ATTACK) != 0) output.PutS32(WaterAttack);
  747. if ((Mask & MASK_WATER_DEFENSE) != 0) output.PutS32(WaterDefense);
  748. if ((Mask & MASK_FIRE_ATTACK) != 0) output.PutS32(FireAttack);
  749. if ((Mask & MASK_FIRE_DEFENSE) != 0) output.PutS32(FireDefense);
  750. if ((Mask & MASK_SOIL_ATTACK) != 0) output.PutS32(SoilAttack);
  751. if ((Mask & MASK_SOIL_DEFENSE) != 0) output.PutS32(SoilDefense);
  752. if ((Mask & MASK_TOBOSS_CRIT_RATE) != 0) output.PutS32(ToBossCritRate);
  753. if ((Mask & MASK_TOBOSS_CRIT_DAMAGE) != 0) output.PutS32(ToBossCritDamage);
  754. if ((Mask & MASK_GOLD_RESTRAINT) != 0) output.PutS32(GoldRestraint);
  755. if ((Mask & MASK_WOOD_RESTRAINT) != 0) output.PutS32(WoodRestraint);
  756. if ((Mask & MASK_WATER_RESTRAINT) != 0) output.PutS32(WaterRestraint);
  757. if ((Mask & MASK_FIRE_RESTRAINT) != 0) output.PutS32(FireRestraint);
  758. if ((Mask & MASK_SOIL_RESTRAINT) != 0) output.PutS32(SoilRestraint);
  759. if ((Mask & MASK_GOLD_RESIST) != 0) output.PutS32(GoldResist);
  760. if ((Mask & MASK_WOOD_RESIST) != 0) output.PutS32(WoodResist);
  761. if ((Mask & MASK_WATER_RESIST) != 0) output.PutS32(WaterResist);
  762. if ((Mask & MASK_FIRE_RESIST) != 0) output.PutS32(FireResist);
  763. if ((Mask & MASK_SOIL_RESIST) != 0) output.PutS32(SoilResist);
  764. if ((Mask & MASK_PVP_KILLVALUE) != 0) output.PutS32(PvpKillValue);
  765. if ((Mask & MASK_YAOQI_LEVEL) != 0) output.PutS32(YaoQiLevel);
  766. if ((Mask & MASK_NORMAL_ATK_LEECH) != 0) output.PutS32(NormalAtkLeech);
  767. if ((Mask & MASK_ACTIVE_ATK_LEECH) != 0) output.PutS32(ActiveAtkLeech);
  768. if ((Mask & MASK_ARTIFACTMAIN_PER) != 0) output.PutS32(ArtifactMainPer);
  769. if ((Mask & MASK_FIELD_BOSS_DAMAGEADD) != 0) output.PutS32(FieldBossDamageAdd);
  770. if ((Mask & MASK_MAX_HP_EXT) != 0) output.PutS32(this.MaxHPExt);
  771. if ((Mask & MASK_DUNGEON_MONETER_DAMAGEADD) != 0) output.PutS32(DungeonMonsterDamageAdd);
  772. if ((Mask & MASK_MOVE_SPEED_ADDITION) != 0) output.PutS32(this.MoveSpeedAddition);
  773. //新增属性
  774. if ((Mask & MASK_MONSTER_RESTRAINT_1) != 0) output.PutS32(this.MonsterRestraint[0]);
  775. if ((Mask & MASK_MONSTER_RESTRAINT_2) != 0) output.PutS32(this.MonsterRestraint[1]);
  776. if ((Mask & MASK_MONSTER_RESTRAINT_3) != 0) output.PutS32(this.MonsterRestraint[2]);
  777. if ((Mask & MASK_MONSTER_RESTRAINT_4) != 0) output.PutS32(this.MonsterRestraint[3]);
  778. if ((Mask & MASK_MONSTER_RESTRAINT_5) != 0) output.PutS32(this.MonsterRestraint[4]);
  779. if ((Mask & MASK_MONSTER_ATK) != 0) output.PutS32(this.monsterAtk);
  780. if ((Mask & MASK_MONSTER_DEF) != 0) output.PutS32(this.monsterDef);
  781. if ((Mask & MASK_MONSTER_ATK_PER) != 0) output.PutS32(this.monsterAtkPer);
  782. if ((Mask & MASK_MONSTER_DEF_PER) != 0) output.PutS32(this.monsterDefPer);
  783. }
  784. public override void ReadExternal(IInputStream input)
  785. {
  786. base.ReadExternal(input);
  787. Mask = input.GetU64();
  788. if (Mask == 0) { return; }
  789. if ((Mask & MASK_MAX_HP) != 0) this.MaxHP = input.GetS32();
  790. if ((Mask & MASK_MOVE_SPEED) != 0) this.MoveSpeed = input.GetF32();
  791. if ((Mask & MASK_HP_REBORN) != 0) this.HPReborn = input.GetS32();
  792. //同步Attribute
  793. if ((Mask & MASK_HP_PER) != 0) this.HPPer = input.GetS32();
  794. if ((Mask & MASK_ATTACK) != 0) this.Attack = input.GetS32();
  795. if ((Mask & MASK_ATTACK_PER) != 0) this.AttackPer = input.GetS32();
  796. if ((Mask & MASK_DEF) != 0) this.Def = input.GetS32();
  797. if ((Mask & MASK_DEF_PER) != 0) this.DefPer = input.GetS32();
  798. if ((Mask & MASK_IGNORE_DEFENSE_PER) != 0) this.IgnoreDefensePer = input.GetS32();
  799. if ((Mask & MASK_CRIT_RATE) != 0) this.CritRate = input.GetS32();
  800. if ((Mask & MASK_CRIT_DAMAGE) != 0) this.CritDamage = input.GetS32();
  801. if ((Mask & MASK_INCALLDAMAGE) != 0) this.IncAllDamage = input.GetS32();
  802. if ((Mask & MASK_ALL_DAMAGE_REDUCE) != 0) this.AllDamageReduce = input.GetS32();
  803. if ((Mask & MASK_CTRLTIME_REDUCE) != 0) this.CtrlTimeReduce = input.GetS32();
  804. if ((Mask & MASK_SKILL_CD) != 0) this.SkillCD = input.GetS32();
  805. if ((Mask & MASK_HEALEFFECT) != 0) this.HealEffect = input.GetS32();
  806. if ((Mask & MASK_HEALEDEFFECT) != 0) this.HealedEffect = input.GetS32();
  807. if ((Mask & MASK_SKILLDAMAGE) != 0) this.SkillDamage = input.GetS32();
  808. if ((Mask & MASK_ATTACK_SPEED) != 0) this.AttackSpeed = input.GetS32();
  809. if ((Mask & MASK_CONTROL_UP) != 0) this.ControlUp = input.GetS32();
  810. if ((Mask & MASK_RES_CRIT_RATE) != 0) this.ResCritRate = input.GetS32();
  811. if ((Mask & MASK_GOLD_ATTACK) != 0) this.GoldAttack = input.GetS32();
  812. if ((Mask & MASK_GOLD_DEFENSE) != 0) this.GoldDefense = input.GetS32();
  813. if ((Mask & MASK_WOOD_ATTACK) != 0) this.WoodAttack = input.GetS32();
  814. if ((Mask & MASK_WOOD_DEFENSE) != 0) this.WoodDefense = input.GetS32();
  815. if ((Mask & MASK_WATER_ATTACK) != 0) this.WaterAttack = input.GetS32();
  816. if ((Mask & MASK_WATER_DEFENSE) != 0) this.WaterDefense = input.GetS32();
  817. if ((Mask & MASK_FIRE_ATTACK) != 0) this.FireAttack = input.GetS32();
  818. if ((Mask & MASK_FIRE_DEFENSE) != 0) this.FireDefense = input.GetS32();
  819. if ((Mask & MASK_SOIL_ATTACK) != 0) this.SoilAttack = input.GetS32();
  820. if ((Mask & MASK_SOIL_DEFENSE) != 0) this.SoilDefense = input.GetS32();
  821. if ((Mask & MASK_TOBOSS_CRIT_RATE) != 0) this.ToBossCritRate = input.GetS32();
  822. if ((Mask & MASK_TOBOSS_CRIT_DAMAGE) != 0) this.ToBossCritDamage = input.GetS32();
  823. if ((Mask & MASK_GOLD_RESTRAINT) != 0) this.GoldRestraint = input.GetS32();
  824. if ((Mask & MASK_WOOD_RESTRAINT) != 0) this.WoodRestraint = input.GetS32();
  825. if ((Mask & MASK_WATER_RESTRAINT) != 0) this.WaterRestraint = input.GetS32();
  826. if ((Mask & MASK_FIRE_RESTRAINT) != 0) this.FireRestraint = input.GetS32();
  827. if ((Mask & MASK_SOIL_RESTRAINT) != 0) this.SoilRestraint = input.GetS32();
  828. if ((Mask & MASK_GOLD_RESIST) != 0) this.GoldResist = input.GetS32();
  829. if ((Mask & MASK_WOOD_RESIST) != 0) this.WoodResist = input.GetS32();
  830. if ((Mask & MASK_WATER_RESIST) != 0) this.WaterResist = input.GetS32();
  831. if ((Mask & MASK_FIRE_RESIST) != 0) this.FireResist = input.GetS32();
  832. if ((Mask & MASK_SOIL_RESIST) != 0) this.SoilResist = input.GetS32();
  833. if ((Mask & MASK_PVP_KILLVALUE) != 0) this.PvpKillValue = input.GetS32();
  834. if ((Mask & MASK_YAOQI_LEVEL) != 0) this.YaoQiLevel = input.GetS32();
  835. if ((Mask & MASK_NORMAL_ATK_LEECH) != 0) this.NormalAtkLeech = input.GetS32();
  836. if ((Mask & MASK_ACTIVE_ATK_LEECH) != 0) this.ActiveAtkLeech = input.GetS32();
  837. if ((Mask & MASK_ARTIFACTMAIN_PER) != 0) this.ArtifactMainPer = input.GetS32();
  838. if ((Mask & MASK_FIELD_BOSS_DAMAGEADD) != 0) this.FieldBossDamageAdd = input.GetS32();
  839. if ((Mask & MASK_MAX_HP_EXT) != 0) this.MaxHPExt = input.GetS32();
  840. if ((Mask & MASK_DUNGEON_MONETER_DAMAGEADD) != 0) this.DungeonMonsterDamageAdd = input.GetS32();
  841. if ((Mask & MASK_MOVE_SPEED_ADDITION) != 0) this.MoveSpeedAddition = input.GetS32();
  842. //新增属性
  843. if ((Mask & MASK_MONSTER_RESTRAINT_1) != 0) this.MonsterRestraint[0] = input.GetS32();
  844. if ((Mask & MASK_MONSTER_RESTRAINT_2) != 0) this.MonsterRestraint[1] = input.GetS32();
  845. if ((Mask & MASK_MONSTER_RESTRAINT_3) != 0) this.MonsterRestraint[2] = input.GetS32();
  846. if ((Mask & MASK_MONSTER_RESTRAINT_4) != 0) this.MonsterRestraint[3] = input.GetS32();
  847. if ((Mask & MASK_MONSTER_RESTRAINT_5) != 0) this.MonsterRestraint[4] = input.GetS32();
  848. if ((Mask & MASK_MONSTER_ATK) != 0) this.monsterAtk = input.GetS32();
  849. if ((Mask & MASK_MONSTER_DEF) != 0) this.monsterDef = input.GetS32();
  850. if ((Mask & MASK_MONSTER_ATK_PER) != 0) this.monsterAtkPer = input.GetS32();
  851. if ((Mask & MASK_MONSTER_DEF_PER) != 0) this.monsterDefPer = input.GetS32();
  852. }
  853. }
  854. /// <summary>
  855. /// NPC治愈协议.
  856. /// </summary>
  857. [MessageType(0xF00001F)]
  858. public class NPCCureEventB2C : PlayerEvent
  859. {
  860. public override void WriteExternal(IOutputStream output)
  861. {
  862. base.WriteExternal(output);
  863. }
  864. public override void ReadExternal(IInputStream input)
  865. {
  866. base.ReadExternal(input);
  867. }
  868. }
  869. /// <summary>
  870. /// Buff触发技能变更.
  871. /// </summary>
  872. [MessageType(0xF000020)]
  873. public class BuffActiveSkillEventB2C : PlayerEvent
  874. {
  875. public bool IsWorking;
  876. public int BuffID;
  877. public int ActiveSkillID;
  878. public int FreezeSkillID;
  879. public override void WriteExternal(IOutputStream output)
  880. {
  881. base.WriteExternal(output);
  882. output.PutBool(IsWorking);
  883. output.PutS32(BuffID);
  884. output.PutS32(ActiveSkillID);
  885. output.PutS32(FreezeSkillID);
  886. }
  887. public override void ReadExternal(IInputStream input)
  888. {
  889. base.ReadExternal(input);
  890. IsWorking = input.GetBool();
  891. BuffID = input.GetS32();
  892. ActiveSkillID = input.GetS32();
  893. FreezeSkillID = input.GetS32();
  894. }
  895. }
  896. /// <summary>
  897. /// Buff触发技能变更.
  898. /// </summary>
  899. [MessageType(0xF000022)]
  900. public class BattleFloatTipsEventB2C : PlayerEvent
  901. {
  902. public CommonAI.XmdsConstConfig.BattleFloatTipsType Type;
  903. public override void WriteExternal(IOutputStream output)
  904. {
  905. base.WriteExternal(output);
  906. output.PutEnum8<CommonAI.XmdsConstConfig.BattleFloatTipsType>(Type);
  907. }
  908. public override void ReadExternal(IInputStream input)
  909. {
  910. base.ReadExternal(input);
  911. Type = input.GetEnum8<CommonAI.XmdsConstConfig.BattleFloatTipsType>();
  912. }
  913. }
  914. /// <summary>
  915. /// 宠物同步客户端数据.
  916. /// </summary>
  917. [MessageType(0xF000024)]
  918. public class PetVisibleDataB2C : IExternalizable, CommonAI.ZoneClient.IUnitVisibleData
  919. {
  920. /// <summary>
  921. /// 单位基础信息.
  922. /// </summary>
  923. public PetBaseInfo BaseInfo = new PetBaseInfo();
  924. public void WriteExternal(IOutputStream output)
  925. {
  926. output.PutExt(this.BaseInfo);
  927. }
  928. public void ReadExternal(IInputStream input)
  929. {
  930. this.BaseInfo = input.GetExt<PetBaseInfo>();
  931. }
  932. public void setVisibleName(String name) { }
  933. public void setVisibleCardData(ICardData datas) { }
  934. }
  935. /// <summary>
  936. /// 宠物基础信息变更事件.
  937. /// </summary>
  938. [MessageType(0xF000025)]
  939. public class PetBaseInfoChangeEventB2C : ObjectEvent
  940. {
  941. public PetBaseInfo BaseInfo;
  942. override public void WriteExternal(IOutputStream output)
  943. {
  944. base.WriteExternal(output);
  945. output.PutExt(BaseInfo);
  946. }
  947. override public void ReadExternal(IInputStream input)
  948. {
  949. base.ReadExternal(input);
  950. BaseInfo = input.GetExt<PetBaseInfo>();
  951. }
  952. }
  953. /// <summary>
  954. /// 单位遗言变更协议.
  955. /// </summary>
  956. [MessageType(0xF000026)]
  957. public class TestamentChangeEventB2C : ObjectEvent
  958. {
  959. public byte TestamentID;
  960. override public void WriteExternal(IOutputStream output)
  961. {
  962. base.WriteExternal(output);
  963. output.PutU8(TestamentID);
  964. }
  965. override public void ReadExternal(IInputStream input)
  966. {
  967. base.ReadExternal(input);
  968. TestamentID = input.GetU8();
  969. }
  970. }
  971. /// <summary>
  972. /// 气泡框.
  973. /// </summary>
  974. [MessageType(0xF000027)]
  975. public class BubbleTipsEventB2C : ObjectEvent
  976. {
  977. /// <summary>
  978. /// 消息.
  979. /// </summary>
  980. public string Msg;
  981. override public void WriteExternal(IOutputStream output)
  982. {
  983. base.WriteExternal(output);
  984. output.PutUTF(Msg);
  985. }
  986. override public void ReadExternal(IInputStream input)
  987. {
  988. base.ReadExternal(input);
  989. Msg = input.GetUTF();
  990. }
  991. }
  992. /// <summary>
  993. /// 向场景内单个单位发送播放音频通知.
  994. /// </summary>
  995. [MessageType(0xF000028)]
  996. public class PlaySoundEventB2CForOne : PlayerEvent
  997. {
  998. /// <summary>
  999. /// 音频文件名,不带后缀.
  1000. /// </summary>
  1001. public string SoundName = null;
  1002. override public void WriteExternal(IOutputStream output)
  1003. {
  1004. base.WriteExternal(output);
  1005. output.PutUTF(SoundName);
  1006. }
  1007. override public void ReadExternal(IInputStream input)
  1008. {
  1009. base.ReadExternal(input);
  1010. SoundName = input.GetUTF();
  1011. }
  1012. }
  1013. /// <summary>
  1014. /// 向场景内所有单位发送播放音频通知.
  1015. /// </summary>
  1016. [MessageType(0xF000029)]
  1017. public class PlaySoundEventB2CForAll : ZoneEvent
  1018. {
  1019. /// <summary>
  1020. /// 音频文件名,不带后缀.
  1021. /// </summary>
  1022. public string SoundName = null;
  1023. override public void WriteExternal(IOutputStream output)
  1024. {
  1025. output.PutUTF(SoundName);
  1026. }
  1027. override public void ReadExternal(IInputStream input)
  1028. {
  1029. SoundName = input.GetUTF();
  1030. }
  1031. }
  1032. /// <summary>
  1033. /// 怪物归属权更改.
  1034. /// </summary>
  1035. [MessageType(0xF000031)]
  1036. public class MonsterHeirInfoChangeEventB2C : ObjectEvent
  1037. {
  1038. public MonsterVisibleDataB2C.HeirInfo UnitHeirInfo;
  1039. public override void WriteExternal(IOutputStream output)
  1040. {
  1041. base.WriteExternal(output);
  1042. output.PutExt(UnitHeirInfo);
  1043. }
  1044. public override void ReadExternal(IInputStream input)
  1045. {
  1046. base.ReadExternal(input);
  1047. UnitHeirInfo = input.GetExt<MonsterVisibleDataB2C.HeirInfo>();
  1048. }
  1049. }
  1050. /// <summary>
  1051. /// 发送可否放置法器通知
  1052. /// </summary>
  1053. [MessageType(0xF000032)]
  1054. public class PlayerPutRefineSoulItemB2c : PlayerEvent
  1055. {
  1056. public bool CanPut = true;
  1057. public string QuestID = null;
  1058. override public void WriteExternal(IOutputStream output)
  1059. {
  1060. base.WriteExternal(output);
  1061. output.PutBool(CanPut);
  1062. output.PutUTF(QuestID);
  1063. }
  1064. override public void ReadExternal(IInputStream input)
  1065. {
  1066. base.ReadExternal(input);
  1067. CanPut = input.GetBool();
  1068. QuestID = input.GetUTF();
  1069. }
  1070. }
  1071. /// <summary>
  1072. /// 单位动态播放特效(非编辑器中的静态数据)
  1073. /// </summary>
  1074. [MessageType(0xF000033)]
  1075. public class DynamicUnitEffectB2C : ObjectEvent
  1076. {
  1077. public string Name;
  1078. public bool BindBody;
  1079. public string BindPartName;
  1080. public float ScaleToBodySize;
  1081. public string SoundName;
  1082. public int EarthQuakeMS;
  1083. public float EarthQuakeXYZ;
  1084. public string CameraAnimation;
  1085. public int EffectTimeMS = 0;
  1086. public override void WriteExternal(IOutputStream output)
  1087. {
  1088. base.WriteExternal(output);
  1089. output.PutUTF(this.Name);
  1090. output.PutBool(this.BindBody);
  1091. output.PutUTF(this.BindPartName);
  1092. output.PutF32(this.ScaleToBodySize);
  1093. output.PutUTF(this.SoundName);
  1094. output.PutS32(this.EarthQuakeMS);
  1095. output.PutF32(this.EarthQuakeXYZ);
  1096. output.PutUTF(this.CameraAnimation);
  1097. output.PutS32(this.EffectTimeMS);
  1098. }
  1099. public override void ReadExternal(IInputStream input)
  1100. {
  1101. base.ReadExternal(input);
  1102. this.Name = input.GetUTF();
  1103. this.BindBody = input.GetBool();
  1104. this.BindPartName = input.GetUTF();
  1105. this.ScaleToBodySize = input.GetF32();
  1106. this.SoundName = input.GetUTF();
  1107. this.EarthQuakeMS = input.GetS32();
  1108. this.EarthQuakeXYZ = input.GetF32();
  1109. this.CameraAnimation = input.GetUTF();
  1110. this.EffectTimeMS = input.GetS32();
  1111. }
  1112. }
  1113. [MessageType(0xF000034)]
  1114. public class ChangeQuestSeekB2C : ObjectEvent
  1115. {
  1116. public string QuestID;
  1117. // x,y or null or funid
  1118. public string SeekInfo;
  1119. public override void WriteExternal(IOutputStream output)
  1120. {
  1121. base.WriteExternal(output);
  1122. output.PutUTF(this.QuestID);
  1123. output.PutUTF(this.SeekInfo);
  1124. }
  1125. public override void ReadExternal(IInputStream input)
  1126. {
  1127. base.ReadExternal(input);
  1128. this.QuestID = input.GetUTF();
  1129. this.SeekInfo = input.GetUTF();
  1130. }
  1131. }
  1132. /// <summary>
  1133. /// 单位遭受攻击提示.
  1134. /// </summary>
  1135. [MessageType(0xF000035)]
  1136. public class UnderAttackNotifyB2C : PlayerEvent
  1137. {
  1138. /// <summary>
  1139. /// 攻击者实例ID.
  1140. /// </summary>
  1141. public uint AttackerID = 0;
  1142. /// <summary>
  1143. /// 攻击者基础信息.
  1144. /// </summary>
  1145. public XmdsUnitBaseInfo AttackerInfo = null;
  1146. public override void WriteExternal(IOutputStream output)
  1147. {
  1148. base.WriteExternal(output);
  1149. output.PutU32(AttackerID);
  1150. output.PutExt(AttackerInfo);
  1151. }
  1152. public override void ReadExternal(IInputStream input)
  1153. {
  1154. base.ReadExternal(input);
  1155. AttackerID = input.GetU32();
  1156. AttackerInfo = input.GetExt<XmdsUnitBaseInfo>();
  1157. }
  1158. }
  1159. /// <summary>
  1160. /// 单位遭受伤害信息.
  1161. /// </summary>
  1162. [MessageType(0xF000036)]
  1163. public class MonsterSufferDamageInfoB2C : PlayerEvent
  1164. {
  1165. /// <summary>
  1166. /// 伤害集合.
  1167. /// </summary>
  1168. public List<PlayerDamageInfo> InfoList = null;
  1169. /// <summary>
  1170. /// 排名.
  1171. /// </summary>
  1172. public int PlayerRank = 0;
  1173. /// <summary>
  1174. /// 玩家伤害.
  1175. /// </summary>
  1176. public int PlayerDamage = 0;
  1177. public override void WriteExternal(IOutputStream output)
  1178. {
  1179. base.WriteExternal(output);
  1180. output.PutExtList(InfoList);
  1181. output.PutS32(PlayerRank);
  1182. output.PutS32(PlayerDamage);
  1183. }
  1184. public override void ReadExternal(IInputStream input)
  1185. {
  1186. base.ReadExternal(input);
  1187. InfoList = input.GetExtList<PlayerDamageInfo>();
  1188. PlayerRank = input.GetS32();
  1189. PlayerDamage = input.GetS32();
  1190. }
  1191. }
  1192. /// <summary>
  1193. /// 跟随状态变换
  1194. /// </summary>
  1195. [MessageType(0xF000037)]
  1196. public class SetAutoFollowB2C : PlayerEvent
  1197. {
  1198. /// <summary>
  1199. /// 是否跟随状态
  1200. /// </summary>
  1201. public int stateFollow;
  1202. public override void ReadExternal(IInputStream input)
  1203. {
  1204. base.ReadExternal(input);
  1205. stateFollow = input.GetS32();
  1206. }
  1207. public override void WriteExternal(IOutputStream output)
  1208. {
  1209. base.WriteExternal(output);
  1210. output.PutS32(stateFollow);
  1211. }
  1212. }
  1213. /// <summary>
  1214. /// 自动战斗状态变换
  1215. /// </summary>
  1216. [MessageType(0xF000038)]
  1217. public class SetAutoBattleB2C : PlayerEvent
  1218. {
  1219. /// <summary>
  1220. /// 是否自动战斗状态
  1221. /// </summary>
  1222. public int isAutoBattle;
  1223. public override void ReadExternal(IInputStream input)
  1224. {
  1225. base.ReadExternal(input);
  1226. isAutoBattle = input.GetS32();
  1227. }
  1228. public override void WriteExternal(IOutputStream output)
  1229. {
  1230. base.WriteExternal(output);
  1231. output.PutS32(isAutoBattle);
  1232. }
  1233. }
  1234. /// <summary>
  1235. /// 掉落物品飞
  1236. /// </summary>
  1237. [MessageType(0xF000039)]
  1238. public class RemoveDropItemB2C : PlayerEvent
  1239. {
  1240. public uint objectId;
  1241. public uint actor_id;
  1242. public RemoveDropItemB2C() { }
  1243. public RemoveDropItemB2C(uint object_id, uint actor_id)
  1244. {
  1245. this.objectId = object_id;
  1246. this.actor_id = actor_id;
  1247. }
  1248. public override void ReadExternal(IInputStream input)
  1249. {
  1250. base.ReadExternal(input);
  1251. objectId = input.GetU32();
  1252. actor_id = input.GetU32();
  1253. }
  1254. public override void WriteExternal(IOutputStream output)
  1255. {
  1256. base.WriteExternal(output);
  1257. output.PutU32(objectId);
  1258. output.PutU32(actor_id);
  1259. }
  1260. }
  1261. }