public uint Execute(PacketDistributed ipacket) { GC_DAMAGEBOARD_INFO packet = (GC_DAMAGEBOARD_INFO )ipacket; if (null == packet) { return((uint)PACKET_EXE.PACKET_EXE_ERROR); } //enter your logic int objID = packet.ObjId; Obj_Character _objChar = Singleton <ObjManager> .GetInstance().FindObjCharacterInScene(objID); if (_objChar == null) { return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); } int nType = packet.Type; int nValue = packet.Value; //冒伤害板数字 int nShowTimes = -1; float fShowInter = 0.0f; if (packet.HasShowtimes && packet.HasShowinter) { nShowTimes = packet.Showtimes; fShowInter = packet.Showinter / 1000.0f; } //需要多次冒泡的特殊处理 if (nShowTimes > 0) { MultiShowDamageBoard _damageBoardInfo = new MultiShowDamageBoard(); _damageBoardInfo.CleanUp(); _damageBoardInfo.ShowTimes = nShowTimes; _damageBoardInfo.ShowInter = fShowInter; _damageBoardInfo.DamageType = (Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE)(nType); _damageBoardInfo.ShowValue = nValue / nShowTimes; _objChar.MultiShowDamageInfo.Add(_damageBoardInfo); _objChar.UpdateShowMultiShowDamageBoard(); } else //不需要分多次冒泡的 { if (_objChar.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC) { _objChar.OnAnimationIsHit(); if (_objChar.NpcEdgeGlow != null) { _objChar.NpcEdgeGlow.UpdateRimPow_NPC(); Obj_NPC objNPC = _objChar as Obj_NPC; if (objNPC.NpcType == GameDefine_Globe.NPC_TYPE.BOSS) { if (objNPC.NpcEdgeGlow != null) { // objNPC.NpcEdgeGlow.UpdateOutLine(); objNPC.NpcEdgeGlow.UpdateRimPower(); } } } //打击音效放在这里,暂时声音可能会有多份,并没有间隔 if (packet.HasAddanimstate && packet.Addanimstate > 0) { _objChar.PlaySoundAtPos(_objChar.ObjType, packet.Addanimstate, _objChar.Position); } } _objChar.ShowDamageBoard((Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE)(nType), nValue); } //连击点的模拟显示 if (packet.Type == (int)Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.TARGET_HPDOWN_PLAYER || packet.Type == (int)Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.PLAYER_ATTACK_CRITICAL) { Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer; if (_mainPlayer) { bool bIsCritical = (packet.Type == (int)Games.GlobeDefine.GameDefine_Globe.DAMAGEBOARD_TYPE.PLAYER_ATTACK_CRITICAL ? true : false); int incHitPoint = 1; _mainPlayer.ChangeHit(incHitPoint, bIsCritical); } } //伤害带来的附加音效 Demo没有这些职业,先去掉 /*if (packet.HasAddanimstate) * { * if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYSHAOLIN) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 4, _objChar.Position); //attack1_gun * } * else if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYTIANSHAN) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 2, _objChar.Position); //attack1_dao * } * else if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYDALI) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 0, _objChar.Position); //attack_jian * } * else if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYXIAOYAO) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 3, _objChar.Position); //attack1_fu * } * else if (packet.Addanimstate == (int)Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_HITBYGAIBANG) * { * _objChar.PlaySoundAtPos(_objChar.ObjType, 167, _objChar.Position); //attack2_gun * } * } */ return((uint)PACKET_EXE.PACKET_EXE_CONTINUE); }