From e85cd8ab6959a006d5501a7bb53aea347d06f792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E6=B2=A2=E5=93=8D=E4=B9=9F?= <72963826+Hibiya615@users.noreply.github.com> Date: Sat, 27 Jun 2026 21:51:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=9C=A8=E7=BA=BF=E5=BA=93PV?= =?UTF-8?q?P=E7=9B=B8=E5=85=B3=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OnlineRepo.json | 24 ------------------ PVP/PVPAction.cs | 39 ++++++++++++++++++++--------- PVP/PVPToy.cs | 60 ++++++++++++++++++++++++++++++--------------- TestScriptRepo.json | 18 -------------- 4 files changed, 68 insertions(+), 73 deletions(-) diff --git a/OnlineRepo.json b/OnlineRepo.json index 0e0231d..363ddc6 100644 --- a/OnlineRepo.json +++ b/OnlineRepo.json @@ -941,30 +941,6 @@ 1238 ] }, - { - "Name": "周边遗迹群(阵地战)", - "Guid": "ec9c9f7d-be48-4974-82cf-396b0fc29261", - "Version": "0.0.0.4", - "Author": "Tetora", - "Repo": "https://github.com/Hibiya615/TetoraKAScript/tree/main", - "DownloadUrl": "https://raw.githubusercontent.com/Hibiya615/TetoraKAScript/refs/heads/main/PVP/The_Borderland_Ruins.cs", - "Note": "v0.0.0.4:\r\n周边遗迹群(阵地战)部分绘制", - "UpdateInfo": "【重要】补充销毁逻辑", - "TerritoryIds": [ - 1273 - ] - }, - { - "Name": "PVP技能绘制", - "Guid": "070e161a-26e9-4a57-8b19-da8c4201058c", - "Version": "0.0.1.0", - "Author": "Tetora", - "Repo": "https://github.com/Hibiya615/TetoraKAScript/tree/main", - "DownloadUrl": "https://raw.githubusercontent.com/Hibiya615/TetoraKAScript/refs/heads/main/PVP/PVPAction.cs", - "Note": "v0.0.1.0:\r\nPVP技能绘制,全部地图可用,未做任何区域限制。\r\n推荐先自己过一遍设置把不需要的关闭\r\n改完用户设置的数值记得点保存!保存!\r\n【仅适用敌方目标标记】是用于四小的,因为一般都会给四小标头标x", - "UpdateInfo": "【重要】补充销毁逻辑", - "TerritoryIds": [] - }, { "Name": "最新最热临时绘制", "Guid": "80890eac-4730-4708-ad1b-05aba469c2a1", diff --git a/PVP/PVPAction.cs b/PVP/PVPAction.cs index 4ddbba9..ec56e23 100644 --- a/PVP/PVPAction.cs +++ b/PVP/PVPAction.cs @@ -22,13 +22,13 @@ using FFXIVClientStructs.FFXIV.Client.Game.UI; namespace PVPAction; [ScriptType(guid: "070e161a-26e9-4a57-8b19-da8c4201058c", name: "PVP技能绘制", territorys: [], - version: "0.0.1.0", author: "Tetora", note: noteStr)] + version: "0.0.1.1", author: "Tetora", note: noteStr)] public class PVPAction { const string noteStr = """ - v0.0.1.0: + v0.0.1.1: PVP技能绘制,全部地图可用,未做任何区域限制。 推荐先自己过一遍设置把不需要的关闭 改完用户设置的数值记得点保存!保存! @@ -213,7 +213,6 @@ public class PVPAction if (@event.TargetId() != accessory.Data.Me) return; accessory.Method.RemoveDraw($"冲天Self.*"); } - [ScriptMethod(name: "队友冲天范围绘制", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:3180"])] public void SkyShatterAlliance(Event @event, ScriptAccessory accessory) @@ -233,13 +232,11 @@ public class PVPAction } } - [ScriptMethod(name: "队友冲天销毁", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:3180"],userControl: false)] public void 队友冲天销毁(Event @event, ScriptAccessory accessory) { accessory.Method.RemoveDraw($"队友冲天{@event.SourceId()}"); } - [ScriptMethod(name: "敌方冲天范围绘制", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:3180"])] public void SkyShatterEnmity(Event @event, ScriptAccessory accessory) @@ -253,7 +250,7 @@ public class PVPAction { var dp = accessory.Data.GetDefaultDrawProperties(); dp.Name = $"敌方冲天内圈{@event.SourceId()}"; - dp.Color = new Vector4(1f, 0f, 0f, 0.65f); + dp.Color = new Vector4(1f, 0f, 0f, 0.6f); dp.Owner = @event.SourceId(); dp.Scale = new Vector2(5f); dp.DestoryAt = 5000; @@ -261,11 +258,21 @@ public class PVPAction var dp1 = accessory.Data.GetDefaultDrawProperties(); dp1.Name = $"敌方冲天外圈{@event.SourceId()}"; - dp1.Color = new Vector4(1, 0f, 0f, 0.35f); + dp1.Color = new Vector4(1, 0f, 0f, 0.5f); dp1.Owner = @event.SourceId(); dp1.Scale = new Vector2(10f); dp1.DestoryAt = 5000; accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp1); + + var dp2 = accessory.Data.GetDefaultDrawProperties(); + dp2.Name = $"敌方冲天内圈描边{@event.SourceId()}"; + dp2.Color = new Vector4(1f, 0f, 0f, 8f); + dp2.Owner = @event.SourceId(); + dp2.Scale = new Vector2(5f); + dp2.InnerScale = new Vector2(4.94f); + dp2.Radian = float.Pi * 2; + dp2.DestoryAt = 5000; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp2); } } @@ -303,6 +310,16 @@ public class PVPAction dp1.Scale = new Vector2(10f); dp1.DestoryAt = 5000; accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp1); + + var dp2 = accessory.Data.GetDefaultDrawProperties(); + dp2.Name = $"敌方标记冲天内圈描边{@event.SourceId()}"; + dp2.Color = new Vector4(1f, 0f, 0f, 10f); + dp2.Owner = @event.SourceId(); + dp2.Scale = new Vector2(5f); + dp2.InnerScale = new Vector2(4.94f); + dp2.Radian = float.Pi * 2; + dp2.DestoryAt = 5000; + accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp2); } } } @@ -691,7 +708,7 @@ public class PVPAction case 4097: var dp = accessory.Data.GetDefaultDrawProperties(); dp.Name = $"蛇鳞击Self"; - dp.Color = new Vector4(0f, 1f, 1f, 1f); + dp.Color = new Vector4(0f, 1f, 1f, 0.6f); dp.Owner = @event.SourceId(); dp.Scale = new Vector2(6f); dp.DestoryAt = 4000; @@ -700,7 +717,7 @@ public class PVPAction case 4098: var dp1 = accessory.Data.GetDefaultDrawProperties(); dp1.Name = $"血气蛇鳞击Self"; - dp1.Color = new Vector4(0f, 1f, 1f, 0.6f); + dp1.Color = new Vector4(0f, 1f, 1f, 0.4f); dp1.Owner = @event.SourceId(); dp1.Scale = new Vector2(15f); dp1.DestoryAt = 4000; @@ -739,7 +756,7 @@ public class PVPAction case 4097: var dp = accessory.Data.GetDefaultDrawProperties(); dp.Name = $"蛇鳞击敌方{@event.SourceId}"; - dp.Color = new Vector4(1f, 0f, 0f, 0.5f); + dp.Color = new Vector4(1f, 0f, 0f, 0.55f); dp.Owner = @event.SourceId(); dp.Scale = new Vector2(6f); dp.DestoryAt = 4000; @@ -748,7 +765,7 @@ public class PVPAction case 4098: var dp1 = accessory.Data.GetDefaultDrawProperties(); dp1.Name = $"血气蛇鳞击敌方{@event.SourceId}"; - dp1.Color = new Vector4(1f, 0f, 0f, 0.4f); + dp1.Color = new Vector4(1f, 0f, 0f, 0.35f); dp1.Owner = @event.SourceId(); dp1.Scale = new Vector2(15f); dp1.DestoryAt = 4000; diff --git a/PVP/PVPToy.cs b/PVP/PVPToy.cs index 2c37f20..31664b9 100644 --- a/PVP/PVPToy.cs +++ b/PVP/PVPToy.cs @@ -101,7 +101,7 @@ public class PVPToy #endregion - #region 基础控制 + #region 用户设置 [UserSetting("EdgeTTS开关")] public bool isEdgeTTS { get; set; } = true; @@ -118,6 +118,12 @@ public class PVPToy [UserSetting("小队吸&控技能填充亮度(推荐小于1)")] public float LightPartyControlAOEFillBrightness { get; set; } = 0.4f; + [UserSetting("小队吸&控技能连线颜色")] + public ScriptColor LightPartyControlAOETetherColor { get; set; } = new() { V4 = new(0f, 1f, 1f, 1f) }; + + [UserSetting("小队吸&控技能连线显示时间(ms)")] + public int LightPartyMoveActionsTetherTime { get; set; } = 2500; + [UserSetting("启用目标标记播报及连线")] public bool isTargetBroadcast { get; set; } = false; @@ -137,9 +143,9 @@ public class PVPToy public bool isHack { get; set; } = false; [UserSetting(note: "请选择龙骑冲天时的移速")] - public SkySpeedEnum SkySpeed { get; set; } = SkySpeedEnum.Default; + public SkyHighSpeedEnum SkyHighSpeed { get; set; } = SkyHighSpeedEnum.Default; - public enum SkySpeedEnum + public enum SkyHighSpeedEnum { Default = 0, AddPoint1 = 1, @@ -162,7 +168,7 @@ public class PVPToy public bool isDRAutoImmunize { get; set; } = false; [UserSetting("[IC] 龙骑冲天自动开启免控")] - public bool isIChysteria { get; set; } = false; + public bool isICAutohysteria { get; set; } = false; [UserSetting("开发者模式")] public bool isDeveloper { get; set; } = false; @@ -206,19 +212,19 @@ public class PVPToy } } - [ScriptMethod(name: "小队DK腐秽大地查找连线半秒", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^29094$"],suppress:3000)] + [ScriptMethod(name: "小队DK腐秽大地查找连线", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^29094$"],suppress:3000)] public void 小队DK腐秽大地查找连线(Event @event, ScriptAccessory accessory) { if (isPartyMember(accessory, @event.SourceId())) { var dp = accessory.Data.GetDefaultDrawProperties(); dp.Name = $"小队DK腐秽大地连线{@event.SourceId()}"; - dp.Color = accessory.Data.DefaultSafeColor.WithW(1f); + dp.Color = LightPartyControlAOETetherColor.V4.WithW(4f); dp.Owner = accessory.Data.Me; dp.TargetPosition = @event.EffectPosition(); dp.ScaleMode |= ScaleMode.YByDistance; dp.Scale = new(1); - dp.DestoryAt = 500; + dp.DestoryAt = LightPartyMoveActionsTetherTime; accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp); } } @@ -233,7 +239,7 @@ public class PVPToy dp.Color = LightPartyControlAOEColor.V4.WithW(20f); dp.Owner = @event.SourceId(); dp.Scale = new Vector2(15f); - dp.InnerScale = new Vector2(14.9f); + dp.InnerScale = new Vector2(14.94f); dp.Radian = float.Pi * 2; dp.DestoryAt = 4500; accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp); @@ -250,24 +256,38 @@ public class PVPToy dp.Color = LightPartyControlAOEColor.V4.WithW(LightPartyControlAOEFillBrightness); dp.Owner = @event.SourceId(); dp.Scale = new Vector2(15f); - dp.DestoryAt = 2500; + dp.DestoryAt = 2100; accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp); } } + + /* // 不知道为什么感觉延迟好高 算了 正常应该就2s - [ScriptMethod(name: "小队舞者行列舞查找连线半秒", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^29432$"],suppress:5000)] + [ScriptMethod(name: "小队舞者诱惑成功提示", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:regex:^3024$"],suppress:5000)] + public void 小队舞者诱惑成功提示(Event @event, ScriptAccessory accessory) + { + if (isPartyMember(accessory, @event.SourceId())) + { + if (isText)accessory.Method.TextInfo($"魅惑", duration: 1300, true); + accessory.Method.EdgeTTS($"魅惑"); + } + } + + */ + + [ScriptMethod(name: "小队舞者行列舞查找连线", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:regex:^29432$"],suppress:5000)] public void 小队舞者行列舞查找连线(Event @event, ScriptAccessory accessory) { if (isPartyMember(accessory, @event.SourceId())) { var dp = accessory.Data.GetDefaultDrawProperties(); dp.Name = $"小队舞者行列舞连线{@event.SourceId()}"; - dp.Color = accessory.Data.DefaultSafeColor.WithW(1f); + dp.Color = LightPartyControlAOETetherColor.V4.WithW(2f); dp.Owner = accessory.Data.Me; dp.TargetObject = @event.SourceId; dp.ScaleMode |= ScaleMode.YByDistance; dp.Scale = new(1); - dp.DestoryAt = 500; + dp.DestoryAt = LightPartyMoveActionsTetherTime; accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp); } } @@ -611,32 +631,32 @@ public class PVPToy public void SkyHighAddSpeed(Event @event, ScriptAccessory accessory) { if (@event.TargetId() != accessory.Data.Me) return; - if (SkySpeed == SkySpeedEnum.Default) + if (SkyHighSpeed == SkyHighSpeedEnum.Default) { if(isHack) accessory.Method.SendChat($"/pdrspeed -1"); if(isHack && isDeveloper) accessory.Method.SendChat($"/e 冲天移速已恢复为默认值"); } - else if (SkySpeed == SkySpeedEnum.AddPoint1) + else if (SkyHighSpeed == SkyHighSpeedEnum.AddPoint1) { if(isHack) accessory.Method.SendChat($"/pdrspeed 1.1"); if(isHack && isDeveloper) accessory.Method.SendChat($"/e 冲天移速已设置为1.1"); } - else if (SkySpeed == SkySpeedEnum.AddPoint2) + else if (SkyHighSpeed == SkyHighSpeedEnum.AddPoint2) { if(isHack) accessory.Method.SendChat($"/pdrspeed 1.2"); if(isHack && isDeveloper) accessory.Method.SendChat($"/e 冲天移速已设置为1.2"); } - else if (SkySpeed == SkySpeedEnum.AddPoint3) + else if (SkyHighSpeed == SkyHighSpeedEnum.AddPoint3) { if(isHack) accessory.Method.SendChat($"/pdrspeed 1.3"); if(isHack && isDeveloper) accessory.Method.SendChat($"/e 冲天移速已设置为1.3"); } - else if (SkySpeed == SkySpeedEnum.AddPoint4) + else if (SkyHighSpeed == SkyHighSpeedEnum.AddPoint4) { if(isHack) accessory.Method.SendChat($"/pdrspeed 1.4"); if(isHack && isDeveloper) accessory.Method.SendChat($"/e 冲天移速已设置为1.4"); } - else if (SkySpeed == SkySpeedEnum.AddPoint5) + else if (SkyHighSpeed == SkyHighSpeedEnum.AddPoint5) { if(isHack) accessory.Method.SendChat($"/pdrspeed 1.5"); if(isHack && isDeveloper) accessory.Method.SendChat($"/e 冲天移速已设置为1.5"); @@ -673,7 +693,7 @@ public class PVPToy accessory.Method.SendChat($"/pdr load AutoImmunizeInputDisable"); } - if (isIChysteria) + if (isICAutohysteria) { accessory.Method.SendChat($"/i-ching-commander anti_hysteria enable"); accessory.Method.SendChat($"/i-ching-commander forced_move enable"); @@ -693,7 +713,7 @@ public class PVPToy accessory.Method.SendChat($"/pdr unload AutoImmunizeInputDisable"); } - if (isIChysteria) + if (isICAutohysteria) { accessory.Method.SendChat($"/i-ching-commander anti_hysteria dispose"); accessory.Method.SendChat($"/i-ching-commander forced_move dispose"); diff --git a/TestScriptRepo.json b/TestScriptRepo.json index d61c0e2..ecd8346 100644 --- a/TestScriptRepo.json +++ b/TestScriptRepo.json @@ -48,23 +48,5 @@ 245, 358 ] - }, - { - "Name": "PVP小玩具", - "Guid": "2312052e-6575-4a91-9e3d-b84699dca8fe", - "Version": "0.0.0.7", - "Author": "Tetora", - "Repo": "https://github.com/Hibiya615/TetoraKAScript/tree/main", - "DownloadUrl": "https://github.com/Hibiya615/TetoraKAScript/blob/main/PVP/PVPToy.cs", - "Note": "v0.0.0.7:\r\nPVP小玩具,仅纷争前线可用,可在狼狱进行测试\r\n推荐先自行过一遍设置关闭不需要的功能,底裤功能使用后果自行承担\r\n标记一般是防四小,所以启用仅标记选项的话就是防四小的播报", - "UpdateInfo": "", - "TerritoryIds": [ - 250, - 431, - 554, - 888, - 1273, - 1313 - ] } ] \ No newline at end of file