更新版本

This commit is contained in:
南沢响也 committed 2026-06-21 23:16:16 +08:00
1 parent 98c1edb690
commit 7f1768e001
5 files changed
+274 -78

No files matched your search

+5 -3
View File
@@ -15,13 +15,13 @@ using KodakkuAssist.Extensions;
namespace Tsukuyomi;
[ScriptType(guid: "97415dc8-cd16-4c9b-87be-026a297c3451", name: "月读歼灭战", territorys: [778],
version: "0.0.0.2", author: "Tetora", note: noteStr)]
version: "0.0.0.3", author: "Tetora", note: noteStr)]
public class Tsukuyomi
{
const string noteStr =
"""
v0.0.0.1:
v0.0.0.3:
LV70 月读歼灭战 初版绘制
""";
@@ -37,7 +37,7 @@ public class Tsukuyomi
Maiogi=0;
}
[ScriptMethod(name: "折磨(顺劈死刑)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:11235"])]
[ScriptMethod(name: "折磨(顺劈死刑)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:regex:^(11235|11955)$"])]
public void 折磨(Event @event, ScriptAccessory accessory)
{
var dp = accessory.Data.GetDefaultDrawProperties();
@@ -52,6 +52,7 @@ public class Tsukuyomi
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Fan, dp);
}
/*
[ScriptMethod(name: "宴会游乐(九连环预备)", eventType: EventTypeEnum.AddCombatant, eventCondition: ["DataId:8769"])]
public void 宴会游乐(Event @event, ScriptAccessory accessory)
{
@@ -82,6 +83,7 @@ public class Tsukuyomi
dp.ScaleMode = ScaleMode.ByTime;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
*/
[ScriptMethod(name: "黄泉之弹(直线分摊)", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:11238"])]
public void 黄泉之弹(Event @event, ScriptAccessory accessory)
+4 -4
View File
@@ -355,11 +355,11 @@
{
"Name": "月读歼灭战",
"Guid": "97415dc8-cd16-4c9b-87be-026a297c3451",
"Version": "0.0.0.2",
"Version": "0.0.0.3",
"Author": "Tetora",
"Repo": "https://github.com/Hibiya615/TetoraKAScript/tree/main",
"DownloadUrl": "https://raw.githubusercontent.com/Hibiya615/TetoraKAScript/refs/heads/main/04-Stormblood/Trial/Tsukuyomi.cs",
"Note": "v0.0.0.1:\r\nLV70 月读歼灭战 初版绘制",
"Note": "v0.0.0.3:\r\nLV70 月读歼灭战 初版绘制",
"UpdateInfo": "",
"TerritoryIds": [
778
@@ -957,11 +957,11 @@
{
"Name": "PVP技能绘制",
"Guid": "070e161a-26e9-4a57-8b19-da8c4201058c",
"Version": "0.0.0.9",
"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.0.9:\r\nPVP技能绘制,全部地图可用,未做任何区域限制。\r\n推荐先自己过一遍设置把不需要的关闭\r\n改完用户设置的数值记得点保存!保存!\r\n【仅适用敌方目标标记】是用于四小的,因为一般都会给四小标头标x",
"Note": "v0.0.1.0:\r\nPVP技能绘制,全部地图可用,未做任何区域限制。\r\n推荐先自己过一遍设置把不需要的关闭\r\n改完用户设置的数值记得点保存!保存!\r\n【仅适用敌方目标标记】是用于四小的,因为一般都会给四小标头标x",
"UpdateInfo": "【重要】补充销毁逻辑",
"TerritoryIds": []
},
+18 -8
View File
@@ -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.0.9", author: "Tetora", note: noteStr)]
version: "0.0.1.0", author: "Tetora", note: noteStr)]
public class PVPAction
{
const string noteStr =
"""
v0.0.0.9:
v0.0.1.0:
PVP技能绘制,全部地图可用,未做任何区域限制。
推荐先自己过一遍设置把不需要的关闭
改完用户设置的数值记得点保存!保存!
@@ -69,7 +69,7 @@ public class PVPAction
public ScriptColor EnmityAOEColor { get; set; } = new() { V4 = new(1f, 0f, 1f, 1f) };
[UserSetting("敌方部分技能填充亮度(推荐小于1)")]
public float EnmityAOEFillBrightness { get; set; } = 0.1f;
public float EnmityAOEFillBrightness { get; set; } = 0.2f;
[UserSetting("敌方部分技能显示时间 (ms)")]
public long EnmityAOETimer { get; set; } = 1000;
@@ -181,7 +181,7 @@ public class PVPAction
if (@event.TargetId() != accessory.Data.Me) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = "冲天Self内圈";
dp.Color = new Vector4(0f, 1f, 1f, 0.6f);
dp.Color = new Vector4(0f, 1f, 1f, 0.5f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(5f);
dp.DestoryAt = 5000;
@@ -189,11 +189,21 @@ public class PVPAction
var dp1 = accessory.Data.GetDefaultDrawProperties();
dp1.Name = "冲天Self外圈";
dp1.Color = new Vector4(0f, 1f, 1f, 0.4f);
dp1.Color = new Vector4(0f, 1f, 1f, 0.3f);
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 = $"冲天Self内圈描边";
dp2.Color = new Vector4(0f, 1f, 1f, 10f);
dp2.Owner = @event.SourceId();
dp2.Scale = new Vector2(5f);
dp2.InnerScale = new Vector2(4.95f);
dp2.Radian = float.Pi * 2;
dp2.DestoryAt = 5000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp2);
}
[ScriptMethod(name: "自身冲天销毁", eventType: EventTypeEnum.StatusRemove, eventCondition: ["StatusID:3180"],userControl: false)]
@@ -584,7 +594,7 @@ public class PVPAction
if (@event.TargetId() != accessory.Data.Me) return;
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"圣盾阵Self";
dp.Color = SelfAOEColor.V4;
dp.Color = SelfAOEColor.V4.WithW(SelfAOEFillBrightness);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(6f);
dp.DestoryAt = 4000;
@@ -780,7 +790,7 @@ public class PVPAction
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"敌方星河漫天{@event.SourceId()}";
dp.Color = EnmityAOEColor.V4;
dp.Color = EnmityAOEColor.V4.WithW(EnmityAOEFillBrightness);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(15f);
dp.DestoryAt = EnmityAOETimer;
@@ -809,7 +819,7 @@ public class PVPAction
{
var dp = accessory.Data.GetDefaultDrawProperties();
dp.Name = $"敌方英雄的幻想曲{@event.SourceId()}";
dp.Color = EnmityAOEColor.V4;
dp.Color = EnmityAOEColor.V4.WithW(EnmityAOEFillBrightness);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(30f);
dp.DestoryAt = EnmityAOETimer;
+245 -61
View File
@@ -22,70 +22,22 @@ using FFXIVClientStructs.FFXIV.Client.Game.UI;
namespace PVPToy;
[ScriptType(guid: "2312052e-6575-4a91-9e3d-b84699dca8fe", name: "PVP小玩具", territorys: [250, 431, 554, 888, 1273, 1313],
version: "0.0.0.6", author: "Tetora", note: noteStr)]
version: "0.0.0.7", author: "Tetora", note: noteStr)]
public class PVPToy
{
const string noteStr =
"""
v0.0.0.6:
v0.0.0.7:
PVP小玩具,仅纷争前线可用,可在狼狱进行测试
推荐先自行过一遍设置关闭不需要的功能,底裤功能使用后果自行承担
标记一般是防四小,所以启用仅标记选项的话就是防四小的播报
""";
#region 基础控制
[UserSetting("EdgeTTS开关")]
public bool isEdgeTTS { get; set; } = true;
[UserSetting("弹窗文本提示开关")]
public bool isText { get; set; } = true;
[UserSetting("启用目标标记播报及连线")]
public bool isTargetBroadcast { get; set; } = false;
[UserSetting("启用自动选中目标标记")]
public bool isAutoTarget { get; set; } = false;
[UserSetting("启用仅适用敌方目标标记 [适用:占星诗人LB播报]" )]
public bool isOnlyMark { get; set; } = false;
[UserSetting("启用自动诗人光阴神净化")]
public bool isAutoWarden { get; set; } = false;
[UserSetting("启用被抓自动防御")]
public bool isAutoGuard { get; set; } = false;
[UserSetting("请确认你已经有相关插件与对应权限")]
public bool isHack { get; set; } = false;
[UserSetting("开发者模式")]
public bool isDeveloper { get; set; } = false;
[UserSetting(note: "请选择冲天时的移速")]
public SkySpeedEnum SkySpeed { get; set; } = SkySpeedEnum.Default;
public enum SkySpeedEnum
{
Default = 0,
AddPoint1 = 1,
AddPoint2 = 2,
AddPoint3 = 3,
AddPoint4 = 4,
AddPoint5 = 5,
}
[UserSetting(note: "请选择复原时的移速")]
public RemoveSpeedEnum RemoveSpeed { get; set; } = RemoveSpeedEnum.Speed1;
public enum RemoveSpeedEnum
{
Default = 0,
Speed1 = 1,
}
#region 基础函数
private List<MarkType> checkMark = new List<MarkType>()
{
MarkType.Attack1,
MarkType.Attack2,
@@ -102,10 +54,6 @@ public class PVPToy
MarkType.Attack8,
};
#endregion
#region 自动播报/执行
public bool isPartyMember(ScriptAccessory accessory, uint SourceId)
{
return accessory.Data.PartyList.Contains(SourceId);
@@ -134,6 +82,200 @@ public class PVPToy
return isInMyAlliance;
}
#endregion
#region 全局销毁
[ScriptMethod(name: "咏唱中断销毁", eventType: EventTypeEnum.CancelAction, eventCondition: [], userControl: false)]
public void 咏唱中断销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($".*{@event.SourceId()}");
}
[ScriptMethod(name: "死亡销毁", eventType: EventTypeEnum.Death, eventCondition: [], userControl: false)]
public void 死亡销毁(Event @event, ScriptAccessory accessory)
{
accessory.Method.RemoveDraw($".*{@event.TargetId()}");
}
#endregion
#region 基础控制
[UserSetting("EdgeTTS开关")]
public bool isEdgeTTS { get; set; } = true;
[UserSetting("弹窗文本提示开关")]
public bool isText { get; set; } = true;
[UserSetting("启用四小模式")]
public bool isLightParty { get; set; } = false;
[UserSetting("小队吸&控技能颜色(如腐秽大地、行列舞)")]
public ScriptColor LightPartyControlAOEColor { get; set; } = new() { V4 = new(1f, 1f, 1f, 1f) };
[UserSetting("小队吸&控技能填充亮度(推荐小于1)")]
public float LightPartyControlAOEFillBrightness { get; set; } = 0.4f;
[UserSetting("启用目标标记播报及连线")]
public bool isTargetBroadcast { get; set; } = false;
[UserSetting("启用自动选中目标标记")]
public bool isAutoTarget { get; set; } = false;
[UserSetting("启用仅适用敌方目标标记 [适用:占星诗人LB播报]" )]
public bool isOnlyMark { get; set; } = false;
[UserSetting("启用自动诗人光阴神净化")]
public bool isAutoWarden { get; set; } = false;
[UserSetting("启用被抓自动防御")]
public bool isAutoGuard { get; set; } = false;
[UserSetting("请确认你已经有相关插件与对应权限")]
public bool isHack { get; set; } = false;
[UserSetting(note: "请选择龙骑冲天时的移速")]
public SkySpeedEnum SkySpeed { get; set; } = SkySpeedEnum.Default;
public enum SkySpeedEnum
{
Default = 0,
AddPoint1 = 1,
AddPoint2 = 2,
AddPoint3 = 3,
AddPoint4 = 4,
AddPoint5 = 5,
}
[UserSetting(note: "请选择复原时的移速")]
public RemoveSpeedEnum RemoveSpeed { get; set; } = RemoveSpeedEnum.Speed1;
public enum RemoveSpeedEnum
{
Default = 0,
Speed1 = 1,
}
[UserSetting("[DR测试码] 龙骑冲天自动开启免控")]
public bool isDRAutoImmunize { get; set; } = false;
[UserSetting("[IC] 龙骑冲天自动开启免控")]
public bool isIChysteria { get; set; } = false;
[UserSetting("开发者模式")]
public bool isDeveloper { get; set; } = false;
#endregion
#region 四小模式
[ScriptMethod(name: "—————— 四小模式选项 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 四小模式选项(Event @event, ScriptAccessory accessory) { }
[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 = LightPartyControlAOEColor.V4.WithW(20f);
dp.Position = @event.EffectPosition;
dp.Scale = new Vector2(5f); // 吸的范围是10m,但是腐秽大地二段止步的范围是5m
dp.InnerScale = new Vector2(4.94f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 3000;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
}
[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 = LightPartyControlAOEColor.V4.WithW(LightPartyControlAOEFillBrightness);
dp.Position = @event.EffectPosition;
dp.Scale = new Vector2(5f); // 吸的范围是10m,但是腐秽大地二段止步的范围是5m
dp.DestoryAt = 1500;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
}
[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.Owner = accessory.Data.Me;
dp.TargetPosition = @event.EffectPosition();
dp.ScaleMode |= ScaleMode.YByDistance;
dp.Scale = new(1);
dp.DestoryAt = 500;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
}
[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 = LightPartyControlAOEColor.V4.WithW(20f);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(15f);
dp.InnerScale = new Vector2(14.9f);
dp.Radian = float.Pi * 2;
dp.DestoryAt = 4500;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Donut, dp);
}
}
[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 = LightPartyControlAOEColor.V4.WithW(LightPartyControlAOEFillBrightness);
dp.Owner = @event.SourceId();
dp.Scale = new Vector2(15f);
dp.DestoryAt = 2500;
accessory.Method.SendDraw(DrawModeEnum.Default, DrawTypeEnum.Circle, dp);
}
}
[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.Owner = accessory.Data.Me;
dp.TargetObject = @event.SourceId;
dp.ScaleMode |= ScaleMode.YByDistance;
dp.Scale = new(1);
dp.DestoryAt = 500;
accessory.Method.SendDraw(DrawModeEnum.Imgui, DrawTypeEnum.Displacement, dp);
}
}
#endregion
#region 自动播报/执行
[ScriptMethod(name: "被狙自动开盾", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:29415"])]
public void MarksmansTarget(Event @event, ScriptAccessory accessory)
@@ -165,6 +307,9 @@ public class PVPToy
}
}
[ScriptMethod(name: "—————— 自动播报 ——————", eventType: EventTypeEnum.StartCasting, eventCondition: ["ActionId:"])]
public void 自动播报(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "谁踹的我.jpg", eventType: EventTypeEnum.ActionEffect, eventCondition: ["ActionId:29485"])]
public void WhoMeteorImpactMe(Event @event, ScriptAccessory accessory)
{
@@ -463,7 +608,7 @@ public class PVPToy
public void 底裤功能(Event @event, ScriptAccessory accessory) { }
[ScriptMethod(name: "[DR] 冲天时更改移速(不与敏捷共存)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:3180"])]
public void 冲天Add(Event @event, ScriptAccessory accessory)
public void SkyHighAddSpeed(Event @event, ScriptAccessory accessory)
{
if (@event.TargetId() != accessory.Data.Me) return;
if (SkySpeed == SkySpeedEnum.Default)
@@ -498,8 +643,8 @@ public class PVPToy
}
}
[ScriptMethod(name: "[DR] 恢复冲天移速", eventType: EventTypeEnum.Targetable, eventCondition: ["DataId:0", "Targetable:True"])]
public void SpeedRestore1(Event @event, ScriptAccessory accessory)
[ScriptMethod(name: "[DR] 落地恢复冲天移速", eventType: EventTypeEnum.Targetable, eventCondition: ["DataId:0", "Targetable:True"])]
public void SkyHighSpeedRestore(Event @event, ScriptAccessory accessory)
{
// 考虑到可能会在空中死亡 没法正常判定 ActionEffect,所以使用自己的 Targetable 代替
if (@event.SourceId() != accessory.Data.Me) return;
@@ -517,6 +662,45 @@ public class PVPToy
}
[ScriptMethod(name: "冲天时自动开启免控(根据用户设置决定使用插件)", eventType: EventTypeEnum.StatusAdd, eventCondition: ["StatusID:3180"])]
public void SkyHighAddImmunize(Event @event, ScriptAccessory accessory)
{
if (@event.TargetId() != accessory.Data.Me) return;
if(!isHack) return;
if (isDRAutoImmunize)
{
accessory.Method.SendChat($"/pdr load AutoImmunizeForceMove");
accessory.Method.SendChat($"/pdr load AutoImmunizeInputDisable");
}
if (isIChysteria)
{
accessory.Method.SendChat($"/i-ching-commander anti_hysteria enable");
accessory.Method.SendChat($"/i-ching-commander forced_move enable");
accessory.Method.SendChat($"/e 已开启IC临时免控");
}
}
[ScriptMethod(name: "落地时自动关闭免控", eventType: EventTypeEnum.Targetable, eventCondition: ["DataId:0", "Targetable:True"])]
public void SkyHighRemovmeImmunize(Event @event, ScriptAccessory accessory)
{
// 考虑到可能会在空中死亡 没法正常判定 ActionEffect,所以使用自己的 Targetable 代替
if (@event.SourceId() != accessory.Data.Me) return;
if(!isHack) return;
if (isDRAutoImmunize)
{
accessory.Method.SendChat($"/pdr unload AutoImmunizeForceMove");
accessory.Method.SendChat($"/pdr unload AutoImmunizeInputDisable");
}
if (isIChysteria)
{
accessory.Method.SendChat($"/i-ching-commander anti_hysteria dispose");
accessory.Method.SendChat($"/i-ching-commander forced_move dispose");
accessory.Method.SendChat($"/e 已关闭IC临时免控");
}
}
#endregion
#region 测试项目
+2 -2
View File
@@ -52,11 +52,11 @@
{
"Name": "PVP小玩具",
"Guid": "2312052e-6575-4a91-9e3d-b84699dca8fe",
"Version": "0.0.0.6",
"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.6:\r\nPVP小玩具,仅纷争前线可用,可在狼狱进行测试\r\n推荐先自行过一遍设置关闭不需要的功能,底裤功能使用后果自行承担\r\n标记一般是防四小,所以启用仅标记选项的话就是防四小的播报",
"Note": "v0.0.0.7:\r\nPVP小玩具,仅纷争前线可用,可在狼狱进行测试\r\n推荐先自行过一遍设置关闭不需要的功能,底裤功能使用后果自行承担\r\n标记一般是防四小,所以启用仅标记选项的话就是防四小的播报",
"UpdateInfo": "",
"TerritoryIds": [
250,