public void OnGfxHitTarget(int id, int impactId, int targetId, int hitCount, int skillId, int duration, float x, float y, float z, float dir, long hit_count_id) { CharacterInfo sender = WorldSystem.Instance.GetCharacterById(id); CharacterInfo target = WorldSystem.Instance.GetCharacterById(targetId); UserInfo playerSelf = WorldSystem.Instance.GetPlayerSelf(); bool hitCountChanged = false; bool playerHitCountChange = false; long curTime = TimeUtility.GetLocalMilliseconds(); UpdateHitTalent(sender, hit_count_id); // 攻击 if (hitCount > 0) { CombatStatisticInfo senderCombatInfo = sender.GetCombatStatisticInfo(); int last_count = senderCombatInfo.MultiHitCount; if (IsImpactHaveDamage(impactId)) { hitCountChanged = senderCombatInfo.UpdateMultiHitCount(hit_count_id, hitCount, curTime); } if (id == WorldSystem.Instance.PlayerSelfId && null != playerSelf) { if (senderCombatInfo.MultiHitCount >= 1 && last_count != senderCombatInfo.MultiHitCount) { GfxSystem.PublishGfxEvent("ge_hitcount", "ui", senderCombatInfo.MultiHitCount); playerHitCountChange = hitCountChanged; } } CombatStatisticInfo targetCombatInfo = target.GetCombatStatisticInfo(); targetCombatInfo.HitCount += hitCount; if (targetId == WorldSystem.Instance.PlayerSelfId && null != playerSelf) { if (WorldSystem.Instance.IsELiteScene()) { RoleInfo roleInfo = LobbyClient.Instance.CurrentRole; SceneResource curScene = WorldSystem.Instance.GetCurScene(); if (null != roleInfo && null != curScene && roleInfo.GetSceneInfo(WorldSystem.Instance.GetCurSceneId()) == 2) { //当前在挑战3星通关 GfxSystem.PublishGfxEvent("ge_pve_fightinfo", "ui", 0, targetCombatInfo.HitCount, curScene.SceneConfig.m_CompletedHitCount, 0); } playerHitCountChange = true; } } } if (playerHitCountChange && null != playerSelf && (WorldSystem.Instance.IsPvpScene() || WorldSystem.Instance.IsMultiPveScene())) { CombatStatisticInfo combatInfo = playerSelf.GetCombatStatisticInfo(); ArkCrossEngineMessage.Msg_CR_HitCountChanged msg = new ArkCrossEngineMessage.Msg_CR_HitCountChanged(); msg.max_multi_hit_count = combatInfo.MaxMultiHitCount; msg.hit_count = combatInfo.HitCount; Network.NetworkSystem.Instance.SendMessage(msg); } if (null != sender && null != target) { int hit_count = 0; hit_count = sender.GetCombatStatisticInfo().MultiHitCount; OnGfxStartImpact(sender.GetId(), impactId, target.GetId(), skillId, duration, new Vector3(x, y, z), dir, hit_count); } }