public void BulletHit(Packet packet) { bulletMessage = (Message_BulletHit)((PacketSingle)packet).message; Debug.Log("handling bullet hit"); if (bulletMessage.destUID != networkUID) { return; } RaycastHit hitInfo; Vector3 pos = VTMapManager.GlobalToWorldPoint(bulletMessage.pos); Vector3 vel = bulletMessage.dir.toVector3; Vector3 a = pos; a += vel * 100.0f; bool flag = Physics.Linecast(pos, a, out hitInfo, 1025); Hitbox hitbox = null; if (flag) { hitbox = hitInfo.collider.GetComponent <Hitbox>(); if ((bool)hitbox && (bool)hitbox.actor) { Debug.Log("found target bullet hit"); hitbox.Damage(bulletMessage.damage, hitInfo.point, Health.DamageTypes.Impact, hitbox.actor, "lol"); BulletHitManager.instance.CreateBulletHit(hitInfo.point, -vel, true); } } }
static bool Prefix(Bullet __instance) { Vector3 pos = Traverse.Create(__instance).Field("hitPoint").GetValue <Vector3>(); Vector3 vel = Traverse.Create(__instance).Field("velocity").GetValue <Vector3>(); Vector3 a = pos; a += -vel * Time.deltaTime; float damage = Traverse.Create(__instance).Field("damage").GetValue <float>(); Hitbox hitbox = null; RaycastHit[] hits; hits = Physics.RaycastAll(pos, vel, 100.0f, 1025); for (int i = 0; i < hits.Length; i++) { RaycastHit hit = hits[i]; hitbox = hit.collider.GetComponent <Hitbox>(); if ((bool)hitbox && (bool)hitbox.actor) { PlayerManager.lastBulletHit = hitbox; Debug.Log("hit box bullet hit"); ulong lastID; if (VTOLVR_Multiplayer.AIDictionaries.reverseAllActors.TryGetValue(hitbox.actor, out lastID)) { Debug.Log("hit player sending bullet packet"); Message_BulletHit hitmsg = new Message_BulletHit(PlayerManager.localUID, lastID, VTMapManager.WorldToGlobalPoint(pos), new Vector3D(vel), damage); NetworkSenderThread.Instance.SendPacketToSpecificPlayer(Networker.hostID, hitmsg, Steamworks.EP2PSend.k_EP2PSendReliable); } } } return(true); }
public void BulletHit(Packet packet) { bulletMessage = (Message_BulletHit)((PacketSingle)packet).message; Debug.Log("handling bullet hit"); if (bulletMessage.destUID != networkUID) { return; } Vector3 pos = VTMapManager.GlobalToWorldPoint(bulletMessage.pos); Vector3 vel = bulletMessage.dir.toVector3; RaycastHit[] hits; hits = Physics.RaycastAll(pos, vel, 100.0f, 1025); Hitbox hitbox = null; for (int i = 0; i < hits.Length; i++) { RaycastHit hit = hits[i]; hitbox = hit.collider.GetComponent <Hitbox>(); if ((bool)hitbox && (bool)hitbox.actor) { Debug.Log("found target bullet hit"); hitbox.Damage(bulletMessage.damage, hit.point, Health.DamageTypes.Impact, hitbox.actor, "Bullet Hit Network"); BulletHitManager.instance.CreateBulletHit(hit.point, -vel, true); } } }
public void BulletHit(Packet packet) { bulletMessage = (Message_BulletHit)((PacketSingle)packet).message; Debug.Log("handling bullet hit"); if (bulletMessage.destUID != networkUID) { return; } RaycastHit hitInfo; Vector3 pos = VTMapManager.GlobalToWorldPoint(bulletMessage.pos); Vector3 vel = bulletMessage.dir.toVector3; Vector3 a = pos; a += vel * 100.0f; bool flag = Physics.Linecast(pos, a, out hitInfo, 1025); Actor source = null; if (AIDictionaries.allActors.ContainsKey(bulletMessage.sourceActorUID)) { source = AIDictionaries.allActors[bulletMessage.sourceActorUID]; } Hitbox hitbox = null; if (flag) { hitbox = hitInfo.collider.GetComponent <Hitbox>(); if ((bool)hitbox && (bool)hitbox.actor) { Debug.Log("found target bullet hit"); hitbox.Damage(bulletMessage.damage * 3.0f, hitInfo.point, Health.DamageTypes.Impact, source, "Bullet Impact"); BulletHitManager.instance.CreateBulletHit(hitInfo.point, -vel, true); } } else { health.Damage(bulletMessage.damage * 3.0f, ownerActor.gameObject.transform.position, Health.DamageTypes.Impact, source, "Bullet Impact"); BulletHitManager.instance.CreateBulletHit(ownerActor.gameObject.transform.position, -vel, true); } }