public override void Unload() { ItemHold.Clear(); try { Plugin.OnDisconnected(); } catch { } TargetManager.Reset(); // special case for wmap. this allow us to save settings UIManager.GetGump <WorldMapGump>() ?.SaveSettings(); ProfileManager.Current?.Save ( UIManager.Gumps.OfType <Gump>() .Where(s => s.CanBeSaved) .Reverse() .ToList() ); Macros.Save(); InfoBars.Save(); ProfileManager.UnLoadProfile(); StaticFilters.CleanCaveTextures(); StaticFilters.CleanTreeTextures(); NetClient.Socket.Disconnected -= SocketOnDisconnected; NetClient.Socket.Disconnect(); _lightRenderTarget?.Dispose(); _world_render_target?.Dispose(); CommandManager.UnRegisterAll(); Weather.Reset(); UIManager.Clear(); World.Clear(); UOChatManager.Clear(); DelayedObjectClickManager.Clear(); _useItemQueue?.Clear(); _useItemQueue = null; Hotkeys = null; Macros = null; MessageManager.MessageReceived -= ChatOnMessageReceived; Settings.GlobalSettings.WindowSize = new Point(Client.Game.Window.ClientBounds.Width, Client.Game.Window.ClientBounds.Height); Settings.GlobalSettings.IsWindowMaximized = Client.Game.IsWindowMaximized(); Client.Game.SetWindowBorderless(false); base.Unload(); }
public override void Activate(GameObject parent) { base.Activate(parent); this.m_RequredItemIDs.Clear(); this.m_RequredHoldItems.Clear(); for (int i = 0; i < this.m_RequredItemNames.Count; i++) { ItemHold itemHold = ItemHold.FindByID((ItemID)Enum.Parse(typeof(ItemID), this.m_RequredItemNames[i])); this.m_RequredHoldItems.Add(itemHold); this.m_RequredItemIDs.Add(itemHold.m_ReplaceInfoID); } }
public void SetItemHold() { for (int i = 0; i < itemMgr.itemInfoList.Count; i++) { GameObject itemHold = FactoryMgr.Instance.GetUI(StringMgr.ItemHold); itemHold.transform.SetParent(PackageContent); //itemHold.transform.localScale = Vector3.one; //道具持有数量等,更换图片资源 ItemHold ih = new ItemHold(i, itemHold); itemHoldList.Add(ih); } }
private bool PickupItemDirectly(Item item, int x, int y, int amount, Point?offset) { if (World.Player.IsDead || ItemHold.Enabled || item == null || item.IsDestroyed) { return(false); } if (amount <= 0) { amount = item.Amount; } ItemHold.Clear(); ItemHold.Set(item, (ushort)amount); NetClient.Socket.Send(new PPickUpRequest(item, (ushort)amount)); UIManager.GameCursor.SetDraggedItem(offset); if (!item.OnGround) { //Entity entity = World.Get(item.Container); //item.Container = Serial.INVALID; //entity.Items.Remove(item); //if (entity != null && entity.HasEquipment) // entity.FindItemByLayer( item.Layer] = null; //entity.Items.ProcessDelta(); } else { item.RemoveFromTile(); } item.TextContainer?.Clear(); //item.AllowedToDraw = false; //World.Items.Remove(item); //World.Items.ProcessDelta(); //CloseItemGumps(item); //World.RemoveItem(item.Serial, true); World.ObjectToRemove = item.Serial; return(true); }
private bool PickupItemDirectly(Item item, int x, int y, int amount, Point?offset) { if (World.Player.IsDead || ItemHold.Enabled || item == null || item.IsDestroyed /*|| (!ItemHold.Enabled && ItemHold.Dropped && ItemHold.Serial.IsValid)*/) { return(false); } ItemHold.Clear(); ItemHold.Set(item, amount <= 0 ? item.Amount : (ushort)amount); UIManager.GameCursor.SetDraggedItem(offset); if (!item.OnGround) { Entity entity = World.Get(item.Container); //item.Container = Serial.INVALID; //entity.Items.Remove(item); if (entity.HasEquipment) { entity.Equipment[(int)item.Layer] = null; } //entity.Items.ProcessDelta(); } else { item.RemoveFromTile(); } item.TextContainer?.Clear(); item.AllowedToDraw = false; //World.Items.Remove(item); //World.Items.ProcessDelta(); //CloseItemGumps(item); NetClient.Socket.Send(new PPickUpRequest(item, (ushort)amount)); return(true); }
protected override bool UpdateCollisions(Triangle blade_t0, Triangle blade_t1, Triangle handle_t0, Triangle handle_t1, Vector3 hit_dir, bool damage_window, out CJObject cj_obj, out Collider collider, out bool collision_with_handle, float damage_window_start, float damage_window_end, out Vector3 hit_pos) { collision_with_handle = false; Vector3 zero = Vector3.zero; Vector3 zero2 = Vector3.zero; Quaternion identity = Quaternion.identity; cj_obj = null; collider = null; hit_pos = Vector3.zero; Item currentItem = this.m_Player.GetCurrentItem(Hand.Right); if (currentItem == null || currentItem.m_Info == null) { return(false); } ItemID id = currentItem.m_Info.m_ID; if (!this.m_PredictionData.ContainsKey((int)id)) { return(base.UpdateCollisions(blade_t0, blade_t1, handle_t0, handle_t1, hit_dir, damage_window, out cj_obj, out collider, out collision_with_handle, damage_window_start, damage_window_end, out hit_pos)); } AnimatorClipInfo[] currentAnimatorClipInfo = this.m_Animator.GetCurrentAnimatorClipInfo(1); AnimationClip animationClip = null; for (int i = 0; i < currentAnimatorClipInfo.Length; i++) { if (this.m_PredictionData[(int)id].ContainsKey(currentAnimatorClipInfo[i].clip)) { animationClip = currentAnimatorClipInfo[i].clip; } } if (animationClip == null) { return(base.UpdateCollisions(blade_t0, blade_t1, handle_t0, handle_t1, hit_dir, damage_window, out cj_obj, out collider, out collision_with_handle, damage_window_start, damage_window_end, out hit_pos)); } List <MeleeAttackPredictionData> list = this.m_PredictionData[(int)id][animationClip]; AnimatorStateInfo currentAnimatorStateInfo = this.m_Animator.GetCurrentAnimatorStateInfo(1); float num = 0.02f; float num2 = (this.m_LastAnimFrame >= 0f) ? (this.m_LastAnimFrame / currentAnimatorStateInfo.length) : 0f; float time = num2; float num3 = currentAnimatorStateInfo.normalizedTime - num2; int num4 = (int)(num3 / num); if (num4 < 1) { num4 = 1; } num3 /= (float)num4; for (int j = 0; j < num4; j++) { float num5 = num2 + num3 * (float)(j + 1); if (num5 < damage_window_start || num5 > damage_window_end) { this.m_LastAnimFrame = this.m_Animator.GetCurrentAnimatorStateInfo(1).length *num5; cj_obj = null; collider = null; time = num5; } else { Vector3 damagerStartPos = this.GetDamagerStartPos(num5, ref list); Vector3 damagerEndPos = this.GetDamagerEndPos(num5, ref list); Vector3 damagerStartPos2 = this.GetDamagerStartPos(time, ref list); Vector3 damagerEndPos2 = this.GetDamagerEndPos(time, ref list); this.m_BladeT0Triangle.p0 = damagerStartPos; this.m_BladeT0Triangle.p1 = damagerStartPos2; this.m_BladeT0Triangle.p2 = damagerEndPos; this.m_BladeT1Triangle.p0 = damagerStartPos2; this.m_BladeT1Triangle.p1 = damagerEndPos2; this.m_BladeT1Triangle.p2 = damagerEndPos; base.GetBoxParameters(this.m_BladeT0Triangle, this.m_BladeT1Triangle, out zero2, out zero, out identity); int num6 = Physics.OverlapBoxNonAlloc(zero2, zero, this.m_HitCollidersTmp, identity); this.SortCollisions(this.m_HitCollidersTmp, num6); for (int k = 0; k < num6; k++) { bool flag = false; Collider collider2 = this.m_HitCollidersTmp[k]; if (!(collider2 == this.m_Player.m_CharacterController.m_Controller)) { if (collider2.gameObject.IsWater()) { this.OnHitWater(collider2); } if ((!collider2.isTrigger || collider2.gameObject.IsAI() || collider2.gameObject.IsFish() || collider2.gameObject.GetComponent <Spikes>()) && !(collider2.gameObject == this.m_Player.gameObject) && !(collider2.gameObject == currentItem.gameObject) && !(collider2.transform.parent == Player.Get().transform.GetChild(0)) && !this.m_HitObjects.Contains(collider2.gameObject) && !(collider2.gameObject.GetComponent <Player>() != null) && !PlayerArmorModule.Get().IsgameObjectEquipedArmor(collider2.gameObject)) { Item component = collider2.gameObject.GetComponent <Item>(); if (!(component != null) || component.m_Info == null || (!component.m_Info.IsParasite() && !component.m_Info.IsArmor())) { ItemReplacer component2 = collider2.gameObject.GetComponent <ItemReplacer>(); if (component2) { string text = component2.m_ReplaceInfoName.ToString().ToLower(); if ((text.Contains("plant") && text != "plantain_lily_leaf") || text.Contains("leaf")) { goto IL_62D; } } ItemHold component3 = collider2.gameObject.GetComponent <ItemHold>(); if (component3) { string text2 = component3.m_InfoName.ToString().ToLower(); if ((text2.Contains("plant") && text2 != "plantain_lily_leaf") || text2.Contains("leaf")) { goto IL_62D; } } AI component4 = collider2.gameObject.GetComponent <AI>(); if (!component4 || !component4.m_GoalsModule || component4.m_GoalsModule.m_ActiveGoal == null || component4.m_GoalsModule.m_ActiveGoal.m_Type != AIGoalType.HumanJumpBack || component4.m_Animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 0.5f) { CJObject component5 = collider2.gameObject.GetComponent <CJObject>(); if (component5 == null) { Transform parent = collider2.gameObject.transform.parent; while (parent != null) { component5 = parent.GetComponent <CJObject>(); if (component5) { break; } parent = parent.parent; } } if (component5 != null && component5.GetHitCollisionType() == HitCollisionType.Bones) { if (base.CheckBonesIntersection(blade_t0, blade_t1, component5)) { flag = true; } } else { flag = true; } if (flag && damage_window) { float anim_frame = num5 * currentAnimatorStateInfo.length; this.SetupAnimFrameForHit(zero2, zero, identity, anim_frame, collider2); this.m_LastBoxHalfSizes = zero; this.m_LastBoxPos = zero2; this.m_LastBoxQuaternion = identity; this.m_LastAnimFrame = this.m_Animator.GetCurrentAnimatorStateInfo(1).length *num5; cj_obj = component5; collider = collider2; hit_pos = this.m_BladeT0Triangle.p0; float proportionalClamp = CJTools.Math.GetProportionalClamp(0f, 1f, num5, num2, currentAnimatorStateInfo.normalizedTime); this.m_AnimationStoppedHandPos = Vector3.Lerp(this.m_LastHandPos, this.m_RHand.transform.position, proportionalClamp); this.m_LastHandPos = this.m_RHand.position; return(true); } } } } } IL_62D :; } time = num5; } } this.m_LastBoxHalfSizes = zero; this.m_LastBoxPos = zero2; this.m_LastBoxQuaternion = identity; this.m_LastAnimFrame = this.m_Animator.GetCurrentAnimatorStateInfo(1).length *this.m_Animator.GetCurrentAnimatorStateInfo(1).normalizedTime; this.m_LastHandPos = this.m_RHand.position; cj_obj = null; collider = null; return(false); }
public override void Load() { base.Load(); ItemHold.Clear(); Hotkeys = new HotkeysManager(); Macros = new MacroManager(); // ######################################################### // [FILE_FIX] // TODO: this code is a workaround to port old macros to the new xml system. if (ProfileManager.CurrentProfile.Macros != null) { for (int i = 0; i < ProfileManager.CurrentProfile.Macros.Length; i++) { Macros.PushToBack(ProfileManager.CurrentProfile.Macros[i]); } Macros.Save(); ProfileManager.CurrentProfile.Macros = null; } // ######################################################### Macros.Load(); InfoBars = new InfoBarManager(); InfoBars.Load(); _healthLinesManager = new HealthLinesManager(); Weather = new Weather(); WorldViewportGump viewport = new WorldViewportGump(this); UIManager.Add(viewport, false); if (!ProfileManager.CurrentProfile.TopbarGumpIsDisabled) { TopBarGump.Create(); } CommandManager.Initialize(); NetClient.Socket.Disconnected += SocketOnDisconnected; MessageManager.MessageReceived += ChatOnMessageReceived; UIManager.ContainerScale = ProfileManager.CurrentProfile.ContainersScale / 100f; SDL.SDL_SetWindowMinimumSize(Client.Game.Window.Handle, 640, 480); if (ProfileManager.CurrentProfile.WindowBorderless) { Client.Game.SetWindowBorderless(true); } else if (Settings.GlobalSettings.IsWindowMaximized) { Client.Game.MaximizeWindow(); } else if (Settings.GlobalSettings.WindowSize.HasValue) { int w = Settings.GlobalSettings.WindowSize.Value.X; int h = Settings.GlobalSettings.WindowSize.Value.Y; w = Math.Max(640, w); h = Math.Max(480, h); Client.Game.SetWindowSize(w, h); } CircleOfTransparency.Create(ProfileManager.CurrentProfile.CircleOfTransparencyRadius); Plugin.OnConnected(); Camera.SetZoomValues ( new[] { .5f, .6f, .7f, .8f, 0.9f, 1f, 1.1f, 1.2f, 1.3f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f, 2.1f, 2.2f, 2.3f, 2.4f, 2.5f } ); Camera.Zoom = ProfileManager.CurrentProfile.DefaultScale; }
public static void EquipCustom() { GameScene gs11 = Client.Game.GetScene <GameScene>(); var _backpack = World.Player.FindItemByLayer(Layer.Backpack); Item customweapon = World.Items.Get(ProfileManager.CurrentProfile.CustomSerial); if (World.Player != null && !World.Player.IsDead) { if (ItemHold.Enabled) { return; } if (_backpack == null) { return; } if (customweapon == null) { return; } if (customweapon.Serial == 0 || ProfileManager.CurrentProfile.CustomSerial == 0) { if (World.Player.FindItemByLayer(Layer.OneHanded) != null) { customweapon.Serial = World.Player.FindItemByLayer(Layer.OneHanded).Serial; GameActions.Print("Custom Item not defined, Setting current equipped Item", 33, MessageType.System); } else if (World.Player.FindItemByLayer(Layer.OneHanded) != null) { customweapon.Serial = World.Player.FindItemByLayer(Layer.TwoHanded).Serial; GameActions.Print("Custom Item not defined, Setting current equipped Item", 33, MessageType.System); } else { TargetManager.SetTargeting(CursorTarget.SetCustomSerial, 0, TargetType.Neutral); GameActions.Print("Custom Item not defined, Using SetCustomSerial Hotkey.", 33, MessageType.System); } } if (EM_FindCustomWeapon() != null) { EM_UnEquip(); TimeSpan.FromMilliseconds(50); } else if (customweapon != null && customweapon.Serial != 0) { customweapon.Serial = ProfileManager.CurrentProfile.CustomSerial; GameActions.PickUp(customweapon.Serial, 0, 0, 1); TimeSpan.FromMilliseconds(50); if (ItemHold.Enabled && !ItemHold.Dropped) { GameActions.Equip(); } else { return; } if (ItemHold.Dropped) { ItemHold.Clear(); } else { return; } } } }