private void DieTask_OnAdditionStart(SmartEngine.Network.Map.Actor actor, Buff skill) { if (client.Character.Tasks.TryRemove("DieTask", out Task removed)) { removed.Deactivate(); } client.Character.Status.Recovering = true; UpdateEvent evt = new UpdateEvent() { Actor = client.Character, Target = client.Character, UpdateType = UpdateTypes.PlayerRecover, ExtraActivateMode = UpdateEvent.ExtraUpdateModes.None }; client.Map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, client.Character, true); evt = new UpdateEvent() { Actor = client.Character, Target = client.Character, AdditionID = 65000, UpdateType = UpdateTypes.Actor }; //evt.AddActorPara(Common.Packets.GameServer.PacketParameter.Dead, 3); client.Map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, client.Character, true); }
private void DieTask_OnAdditionEnd(SmartEngine.Network.Map.Actor actor, Buff skill, bool cancel) { client.Character.Tasks.TryRemove("DieTask", out Task removed); UpdateEvent evt = new UpdateEvent() { Actor = client.Character, Target = client.Character, AdditionSession = 28674, ExtraActivateMode = UpdateEvent.ExtraUpdateModes.Cancel, SkillSession = 255, AdditionID = 65010, UpdateType = UpdateTypes.Actor, //evt.AddActorPara(Common.Packets.GameServer.PacketParameter.Speed, 62); UserData = new byte[] { 9, 3, 0 } }; if (!cancel) { client.Character.Status.Dying = false; //evt.AddActorPara(Common.Packets.GameServer.PacketParameter.Dead, 1); } client.Map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, client.Character, true); evt = new UpdateEvent() { Actor = client.Character, Target = client.Character, AdditionSession = 28674, ExtraActivateMode = UpdateEvent.ExtraUpdateModes.Cancel, UpdateType = UpdateTypes.ActorExtension }; client.Map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, client.Character, true); }
private void ActorItemPickDropTask_OnAdditionEnd(SmartEngine.Network.Map.Actor actor, Buff skill, bool cancel) { Map.Map map = MapManager.Instance.GetMap(pc.MapInstanceID); pc.Tasks.TryRemove("ActorItemPickDropTask", out Task removed); switch (action) { case ActionTypes.Pick: { UpdateEvent evt = new UpdateEvent() { UpdateType = UpdateTypes.ItemPick, Actor = pc, Target = item, UserData = (byte)1 }; map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, pc, true); } break; case ActionTypes.PickCorpse: { UpdateEvent evt = new UpdateEvent() { UpdateType = UpdateTypes.ItemPickCorpse, Actor = pc, Target = item, UserData = (byte)1 }; map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, pc, true); } break; case ActionTypes.Drop: { UpdateEvent evt = new UpdateEvent() { UpdateType = UpdateTypes.ItemDrop, Actor = pc, Target = item, X = (short)item.X, Y = (short)item.Y, Z = (short)item.Z, UserData = (byte)1 }; map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, pc, true); } break; } }
private void DieTask_OnAdditionStart(SmartEngine.Network.Map.Actor actor, Buff skill) { UpdateEvent evt = UpdateEvent.NewActorAdditionEvent(client.Character, client.Character, 255, 28674, 65010, UpdateEvent.ExtraUpdateModes.Activate); //evt.AddActorPara(Common.Packets.GameServer.PacketParameter.Speed, 6); client.Map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, client.Character, true); evt = new UpdateEvent() { Actor = client.Character, Target = client.Character, AdditionSession = 28674, SkillSession = 0, AdditionID = 65010, RestTime = 80000, UpdateType = UpdateTypes.ActorExtension }; client.Map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, client.Character, true); }
private void DieTask_OnAdditionEnd(SmartEngine.Network.Map.Actor actor, Buff skill, bool cancel) { client.Character.Tasks.TryRemove("RecoverTask", out Task removed); client.Character.Status.Recovering = false; if (!cancel) { UpdateEvent evt = new UpdateEvent() { Actor = client.Character, Target = client.Character, UpdateType = UpdateTypes.Actor }; //evt.AddActorPara(Common.Packets.GameServer.PacketParameter.Dead, 0); client.Map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, client.Character, true); Interlocked.Exchange(ref client.Character.HP, (int)(client.Character.MaxHP * 0.7f)); client.SendPlayerHP(); client.Character.Status.Dead = false; client.Character.Status.Dying = false; evt = new UpdateEvent() { Actor = client.Character, Target = client.Character, UpdateType = UpdateTypes.PlayerRecover, ExtraActivateMode = UpdateEvent.ExtraUpdateModes.Activate }; client.Map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, client.Character, true); } else { UpdateEvent evt = new UpdateEvent() { Actor = client.Character, Target = client.Character, UpdateType = UpdateTypes.PlayerRecover, ExtraActivateMode = UpdateEvent.ExtraUpdateModes.Cancel }; client.Map.SendEventToAllActorsWhoCanSeeActor(MapEvents.EVENT_BROADCAST, evt, client.Character, true); } }