给予倍镜

This commit is contained in:
yinghua 2025-02-04 17:59:01 +08:00
parent 150f1d59e4
commit 36b75f9b08
17 changed files with 134 additions and 105 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,17 +0,0 @@
SoloKing/Script/Global/Tool/StateMachine.lua
SoloKing/Script/Global/RepData.lua
SoloKing/Script/Global/Plugin/Plugins/MapTool.lua
SoloKing/Script/Global/Plugin/Plugins/BuffManager_PC.lua
SoloKing/Script/Global/Plugin/Plugins/MiniConfig.lua
SoloKing/Script/Global/Plugin/Plugins/ArchiveManager.lua
SoloKing/Script/Global/Plugin/Plugins/SkillConfig.lua
SoloKing/Script/Global/Plugin/Plugins/PoisonManager.lua
SoloKing/Script/Global/Plugin/Plugins/ServerTimeManager.lua
SoloKing/Script/Global/Plugin/Plugins/Skill/Skill_Base.lua
SoloKing/Script/Global/Plugin/Plugins/BuffConfig.lua
SoloKing/Script/Global/Plugin/Plugins/BuffManager.lua
SoloKing/Script/Global/Plugin/Plugins/Buff/Buff_Base.lua
SoloKing/Script/Global/Plugin/Plugins/SkillManager.lua
SoloKing/Script/Global/Plugin/PluginConfig.lua
SoloKing/Script/Global/Plugin/PluginManager.lua
SoloKing/Script/Global/Plugin/MiniManager.lua

View File

@ -194,6 +194,7 @@ function UGCPlayerController:GetEnableDamageText()
if not table.isEmpty(Archive) and not table.isEmpty(Archive.Disables) and Archive.Disables.DamageText ~= nil then
self.EnableDamageText = Archive.Disables.DamageText
end
return self.EnableDamageText;
end
--- 处理切换观战对象

View File

@ -9,32 +9,15 @@ function UGCPlayerPawn:ReceiveBeginPlay()
self.bVaultIsOpen = DefaultSettings.OpenVault;
self.DamageNotifyDelegate:Add(self.PlayerInjury, self)
--- 仅客户端
--self.OnCharacterShootDelegate:Add(function(Pawn, Weapon)
-- UGCLogSystem.Log("[UGCPlayerPawn:ReceiveBeginPlay] %s 开始射击", UE.GetName(Weapon));
--end, self);
--self.OnCharacterStartFireDelegate:Add(function(Pawn, Weapon)
-- UGCLogSystem.Log("[UGCPlayerPawn:ReceiveBeginPlay] Weapon = %s 开火", UE.GetName(Weapon))
--end, self)
end
--function UGCPlayerPawn:ReceiveTick(DeltaTime)
-- self.SuperClass.ReceiveTick(self, DeltaTime);
--end
function UGCPlayerPawn:ReceiveEndPlay()
if GlobalTickTool then GlobalTickTool:RemoveTickByOwner(self) end
self.SuperClass.ReceiveEndPlay(self);
end
--function UGCPlayerPawn:GetReplicatedProperties()
-- return;
--end
function UGCPlayerPawn:GetAvailableServerRPCs()
return "UpdateWeaponParts"
return "UpdateWeaponParts", "ReplacePartId"
end
function UGCPlayerPawn:ReceivePossessed(NewController)
@ -227,14 +210,31 @@ UGCPlayerPawn.SlotWeapons = {};
---@param Weapons table<ESurviveWeaponPropSlot, int[]> 插槽武器
function UGCPlayerPawn:UpdateSlotWeapons(Weapons)
self.SlotWeapons = TableHelper.DeepCopyTable(Weapons);
for i = 0, ESurviveWeaponPropSlot.SWPS_Max do
if self.SlotWeapons[i] then
self:CheckHasSlotWeapon(i, self.SlotWeapons[i]);
end
end
self:AddAllTelescopes();
self:CheckSlotWeapons();
end
function UGCPlayerPawn:AddAllTelescopes()
local AllDatas = UGCBackPackSystem.GetAllItemData(self)
local HadTeles = {};
for i, v in pairs(AllDatas) do
if GetItemIdType(v.ItemID) == 203 then
HadTeles[v.ItemID] = v.Count;
end
end
-- 直接给他所有的配件
for i, v in pairs(WeaponTypeParts[EWeaponPartType.Telescope]) do
if HadTeles[v] == nil then
ItemTool.AddItem(self, v, 1, false);
end
end
end
--- 通过插槽检查武器需要先配置好之后再启动该方法仅限两把武器如果只有一把武器SlotWeapons的第一个值必须为 SWPS_MainShootWeapon1
@ -346,14 +346,14 @@ function UGCPlayerPawn:UpdateWeaponParts(WeaponID, WeaponParts)
end
end
UnrealNetwork.CallUnrealRPC(self:GetPlayerControllerSafety(), self, "RecvWeaponParts", WeaponID, WeaponParts);
UnrealNetwork.CallUnrealRPC(self:GetPlayerControllerSafety(), self, "RecvParts", WeaponID, WeaponParts);
end
function UGCPlayerPawn:RecvWeaponParts(WeaponID, Parts)
function UGCPlayerPawn:RecvParts(WeaponID, Parts)
if table.isEmpty(ArchiveTable[LocalPlayerKey]) then ArchiveTable[LocalPlayerKey] = {}; end
if table.isEmpty(ArchiveTable[LocalPlayerKey].Weapons) then ArchiveTable[LocalPlayerKey].Weapons = {}; end
ArchiveTable[LocalPlayerKey].Weapons[WeaponID] = Parts;
UGCLogSystem.LogTree(string.format("[UGCPlayerPawn:RecvWeaponParts] Parts ="), Parts)
UGCLogSystem.LogTree(string.format("[UGCPlayerPawn:RecvParts] Parts ="), Parts)
UGCEventSystem.SendEvent(EventTypes.UpdateWeapons, WeaponID)
end

View File

@ -40,4 +40,6 @@ EventTypes = EventTypes or {
AllSelectWeaponsAlready = CountTable(); -- 所有存档数据准备就绪
UpdateEnterWeapons = CountTable(); -- 所有存档数据准备就绪
UpdateWeapons = CountTable(); -- 所有存档数据准备就绪
OpenOldWeaponParts = CountTable(); -- 所有存档数据准备就绪
}

View File

@ -546,8 +546,10 @@ function MiniManager:OnMiniRoundFormalStart()
end
function MiniManager:OnMiniRoundEnd()
if self.CurrMiniMode.bGameEnd == false and self.CurrMiniMode.bRoundEnd == false then
table.func(self.CurrMiniMode, "OnTimeExhausted", self.State)
if self.State == MiniGameState.ROUND_GAMING then
if self.CurrMiniMode.bGameEnd == false and self.CurrMiniMode.bRoundEnd == false then
table.func(self.CurrMiniMode, "OnTimeExhausted", self.State)
end
end
-- 通知结束了
UGCLogSystem.Log("[MiniManager:OnMiniRoundEnd] 结束")
@ -627,36 +629,6 @@ function MiniManager:OnPawnInit(Pawn)
end
end
--- 修改伤害函数
---@param DamagedActor UGCPlayerPawn_C
---@param Damage float
---@param DamageType EDamageType
---@param EventInstigator UGCPlayerController_C
--function MiniManager:OnPlayerDamage(DamagedActor, Damage, DamageType, EventInstigator)
-- UGCLogSystem.Log("[MiniManager:OnPlayerDamage] DamagedActor = %s, Damage = %f", UE.GetName(DamagedActor), Damage);
-- local CalDamage = table.func(self.CurrMiniMode, 'OnPlayerTakeDamage', DamagedActor, Damage, DamageType, EventInstigator)
-- if CalDamage == nil then return Damage; end
-- return CalDamage;
--end
--- S & C 接受到伤害函数
--function MiniManager:BPReceiveDamage(DamagedActor, Damage, DamageType, InstigatedBy, DamageCauser)
-- if IsServer then
-- table.func(self.CurrMiniMode, 'BPReceiveDamage', DamagedActor, Damage, DamageType, InstigatedBy, DamageCauser)
-- end
--end
--- 服务器/客户端收到伤害数据
---@param DamagedPawn UGCPlayerPawn_C
---@param Damage float
---@param DamageType UDamageType
---@param InstigatedBy UGCPlayerController_C
---@param DamageCauser AActor
--function MiniManager:ReceiveDamage(DamagedPawn, Damage, DamageType, InstigatedBy, DamageCauser)
-- UGCLogSystem.Log("[MiniManager:ReceiveDamage] 收到伤害")
-- table.func(self.CurrMiniMode, "ReceiveDamage", DamagedPawn, Damage, DamageType, InstigatedBy, DamageCauser);
--end
--- 当玩家死亡
---@param DeadPlayerKey PlayerKey
---@param KillerPlayerKey PlayerKey

View File

@ -539,6 +539,7 @@ function Mini_Solo:CheckTimeExhausted_Health()
end
end
local Count = table.getCount(Table);
if Count == 0 then return nil; end
if Count == 1 then return Table[1].PlayerKey; end
table.sort(Table, function(a, b)
return a.Health > b.Health;
@ -1642,7 +1643,33 @@ function Mini_Solo:PlayerAddWeapon(PlayerKey, Weapon)
-- 检查当前武器上是否有倍镜
for i, v in pairs(NeedAddTelescope) do
--Pawn:AddItem(i, );
Pawn:AddItem(i, 1, false);
end
-- 判断武器上原本是否有该配件
if ArchiveTable[PlayerKey] and ArchiveTable[PlayerKey].Weapons[Weapon] then
if WeaponSuits[Weapon] then
if WeaponSuits[Weapon][EWeaponPartType.Telescope] then
local HaveParts = {};
for i, PartID in pairs(WeaponSuits[Weapon][EWeaponPartType.Telescope]) do
HaveParts[PartID] = 1;
end
local Parts = ArchiveTable[PlayerKey].Weapons[Weapon];
-- 判断是否有倍镜
local HavePart = false;
for i, PartID in pairs(Parts) do
if HaveParts[PartID] then HavePart = true; end
end
-- 移除
if not HavePart then
local Weapons = ItemTool.GetWeaponsById(Pawn, Weapon)
for i, v in pairs(Weapons) do
UGCGunSystem.RemoveGunAttachmentBySocketType(v, ItemTool.GetWeaponAttachmentSocketType(EWeaponPartType.Telescope));
end
end
end
end
end
-- 启动检测
@ -1655,16 +1682,6 @@ function Mini_Solo:PlayerAddWeapon(PlayerKey, Weapon)
end
end
--- 服务器/客户端收到伤害数据
---@param DamagedPawn UGCPlayerPawn_C
---@param Damage float
---@param DamageType UDamageType
---@param InstigatedBy UGCPlayerController_C
---@param DamageCauser AActor
function Mini_Solo:ReceiveDamage(DamagedPawn, Damage, DamageType, InstigatedBy, DamageCauser)
return Damage;
end
---@param PlayerStartList table<TeamId, table<int32, APlayerStart>>
---@param Controller UGCPlayerController_C
function Mini_Solo:SelectPlayerStart(PlayerStartList, Controller)

View File

@ -15,11 +15,9 @@ require(Prefix .. 'RankInformation' .. Post)
function UnableTable()
ObjectPath = nil;
WeaponTable = nil;
EWeaponTypes = nil;
EWeaponIdType = nil;
WeaponTypeInfo = nil;
WeaponTable = nil;
EnglishNamedWeapon = nil;
ShootWeaponEnums = nil;
EFillBulletType = nil;

View File

@ -20,9 +20,6 @@ require(Prefix .. 'SoundSystem')
require(Prefix .. 'GlobalInit')
require(Prefix .. 'UGCEventSystem')
require(Prefix .. 'GlobalTickTool')
require(Prefix .. 'GlobalBeginTool')
require(Prefix .. 'json')
require(Prefix .. 'UGCSystemLibrary')
require(Prefix .. 'MyWeaponSystem')
@ -33,11 +30,11 @@ require(Prefix .. 'WidgetLibrary')
if DefaultSettings.EnableTest then
require(Prefix .. 'TestTool')
for i, v in pairs(TestTool) do
if type(v) == 'function' then
v(TestTool);
end
end
--for i, v in pairs(TestTool) do
-- if type(v) == 'function' then
-- v(TestTool);
-- end
--end
end

View File

@ -117,21 +117,18 @@ function UE.InitArchiveData()
return {
TotalGameTimes = 0; -- 经典模式游玩次数,同步
GameTimes = 0, -- 游玩次数(包含所有模式)不同步
Weapons = {}, -- 武器配件 不同步
Weapons = {}, -- 武器配件
Score = DefaultSettings.RankScore, -- 默认 2000分 同步
WinTimes = 0, -- 一共获胜次数 不同步
GameWinTimes = 0, -- 经典模式获胜次数 同步
Kill = 0, -- 总击杀数 同步
Dead = 0, -- 总死亡数 同步
HideScore = 0, -- 隐藏分 同步
Disables = {};
-- 最后十局战绩
Last10Games = {}, -- 历史十局 同步
CurSeason = 0; -- 默认赛季 不同步
--- 赛季信息
Seasons = {}; -- 历史赛季 同步
@ -144,6 +141,8 @@ function UE.InitArchiveData()
NoSelectMaps = {}; -- 没有选择的地图
EnterWeaponIndex = nil; -- 娱乐模式的之前选择的 Index
EnterWeapons = {}; -- 娱乐模式保存的武器
bOldParts = nil, -- 是否默认开启之前的武器配件配置
};
end

View File

@ -14,6 +14,7 @@
---@field TextBlock_Parts UTextBlock
---@field TextBlock_WeaponName UTextBlock
---@field WB_DamageTextButton UWB_DamageTextButton_C
---@field WB_OpenOldWeaponParts UWB_OpenOldWeaponParts_C
--Edit Below--
local WB_WeaponConfiguration = {
bInitDoOnce = false;
@ -66,6 +67,8 @@ function WB_WeaponConfiguration:LuaInit()
Item:SetSelectStyle(1)
Item:BindSelectCallBack(self.ClickSelectPart, self)
end
self.WB_OpenOldWeaponParts:LuaInit();
end
function WB_WeaponConfiguration:CloseSelf()

View File

@ -0,0 +1,37 @@
---@class WB_OpenOldWeaponParts_C:UUserWidget
---@field NewButton_Shovel UNewButton
---@field WidgetSwitcher_ChangeShovel UWidgetSwitcher
--Edit Below--
---@type WB_OpenOldWeaponParts_C
local WB_OpenOldWeaponParts = { bInitDoOnce = false }
function WB_OpenOldWeaponParts:Construct()
self:LuaInit();
end
function WB_OpenOldWeaponParts:LuaInit()
if self.bInitDoOnce then return ; end
self.bInitDoOnce = true;
UITool.BindButtonClicked(self.NewButton_Shovel, self.OnClickButton, self)
UGCEventSystem.AddListener(EventTypes.OpenOldWeaponParts, self.OnOpenOldWeaponParts, self)
if ArchiveTable[LocalPlayerKey] and ArchiveTable[LocalPlayerKey].bOldParts then
self:OnOpenOldWeaponParts(ArchiveTable[LocalPlayerKey].bOldParts);
end
end
function WB_OpenOldWeaponParts:OnOpenOldWeaponParts(IsEnable)
self.bOldParts = IsEnable;
self.WidgetSwitcher_ChangeShovel:SetActiveWidgetIndex(IsEnable and 1 or 0);
end
WB_OpenOldWeaponParts.bOldParts = false;
function WB_OpenOldWeaponParts:OnClickButton()
UGCLogSystem.Log("[WB_DamageTextButton:OnClickButton] 点击")
self:OnOpenOldWeaponParts(not self.bOldParts);
UGCEventSystem.SendEvent(EventTypes.OpenOldWeaponParts, self.bOldParts);
end
return WB_OpenOldWeaponParts

View File

@ -5,6 +5,7 @@
---@field Button_Test_Custom UButton
---@field Button_TestSide UButton
---@field CanvasPanel_Test UCanvasPanel
---@field CustomizeCanvasPanel_BP_C_4 UCustomizeCanvasPanel_BP_C
---@field Overlay_EnemyHP UOverlay
---@field TextBlock_1 UTextBlock
---@field TextBlock_EnemyHP UTextBlock
@ -38,6 +39,8 @@ function WB_Main:LuaInit()
UGCEventSystem.AddListener(EventTypes.MiniStateChange, self.OnMiniStateChange, self)
UGCEventSystem.AddListener(EventTypes.ChangeSpector, self.OnChangeSpector, self)
UGCEventSystem.AddListener(EventTypes.ShowRoundWin, self.ShowRoundWin, self)
UGCEventSystem.AddListener(EventTypes.OpenOldWeaponParts, self.OpenOldWeaponParts, self)
UGCEventSystem.AddListener(EventTypes.UpdateArchiveData, self.UpdateArchiveData, self)
--- 死亡的时候显示 ID Panel
UGCEventSystem.AddListener(EventTypes.PlayerRespawn, function(MainUI, PlayerKey)
@ -79,9 +82,11 @@ function WB_Main:LuaInit()
self.WB_PID:LuaInit();
self.WB_Title1_2:LuaInit();
self.WB_Title2_2:LuaInit();
--self.WB_SelectParts:LuaInit();
self.WB_ReselectWeaponBtn:LuaInit();
--self.WB_SelectParts:SetType({ EWeaponPartType.Telescope, EWeaponPartType.Grip, EWeaponPartType.Muzzle, });
--- 有显示的操作
self.WB_SelectParts:LuaInit();
self.WB_SelectParts:SetType({ EWeaponPartType.Telescope, EWeaponPartType.Grip, EWeaponPartType.Muzzle, });
self:ShowCustomSelectWeaponBtn(false);
@ -112,6 +117,21 @@ function WB_Main:LuaInit()
GameState:UIAlready();
end
function WB_Main:OpenOldWeaponParts(IsShow)
UGCLogSystem.Log("[WB_Main:OpenOldWeaponParts] 执行")
if IsShow then
self.CustomizeCanvasPanel_BP_C_4:SetVisibility(ESlateVisibility.SelfHitTestInvisible);
else
self.CustomizeCanvasPanel_BP_C_4:SetVisibility(ESlateVisibility.Collapsed);
end
end
function WB_Main:UpdateArchiveData()
if ArchiveTable[LocalPlayerKey] then return; end
--- 默认选项
self:OpenOldWeaponParts(ArchiveTable[LocalPlayerKey].bOldParts or false);
end
function WB_Main:OnShowPanel(...)
self.WB_PID:SetIDs()
end

View File

@ -53,13 +53,13 @@ SwitchesInMaps=((Key="r.Mobile.EnableIBL",Value=0),(Key="s.StreamableDelegateLim
PlayBindingArray=[]
[JobOption]
LastJobId=-1
LastWindowsJobId=-1
LastAndroidJobId=-1
LastIOSJobId=-1
PakOnly=0
LastSkipBake=False
LastTargetPlatform=LinuxServer
LastJobId=600044806
LastWindowsJobId=600026723
LastAndroidJobId=600026723
LastIOSJobId=600026723
PakOnly=1
LastSkipBake=True
LastTargetPlatform=LinuxServer+WindowsNoEditor+Android_ETC2+IOS+OpenHarmony_ETC2
[UGCUploadOption]
PlatformIndex=0