Compare commits
3 Commits
b009296e20
...
36b75f9b08
Author | SHA1 | Date | |
---|---|---|---|
36b75f9b08 | |||
150f1d59e4 | |||
e3ab04dff9 |
Binary file not shown.
Binary file not shown.
BIN
SoloKing/Asset/UI/Tool/WB_OpenOldWeaponParts.uasset
Normal file
BIN
SoloKing/Asset/UI/Tool/WB_OpenOldWeaponParts.uasset
Normal file
Binary file not shown.
Binary file not shown.
@ -194,6 +194,7 @@ function UGCPlayerController:GetEnableDamageText()
|
|||||||
if not table.isEmpty(Archive) and not table.isEmpty(Archive.Disables) and Archive.Disables.DamageText ~= nil then
|
if not table.isEmpty(Archive) and not table.isEmpty(Archive.Disables) and Archive.Disables.DamageText ~= nil then
|
||||||
self.EnableDamageText = Archive.Disables.DamageText
|
self.EnableDamageText = Archive.Disables.DamageText
|
||||||
end
|
end
|
||||||
|
return self.EnableDamageText;
|
||||||
end
|
end
|
||||||
|
|
||||||
--- 处理切换观战对象
|
--- 处理切换观战对象
|
||||||
|
@ -9,32 +9,15 @@ function UGCPlayerPawn:ReceiveBeginPlay()
|
|||||||
self.bVaultIsOpen = DefaultSettings.OpenVault;
|
self.bVaultIsOpen = DefaultSettings.OpenVault;
|
||||||
|
|
||||||
self.DamageNotifyDelegate:Add(self.PlayerInjury, self)
|
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
|
end
|
||||||
|
|
||||||
--function UGCPlayerPawn:ReceiveTick(DeltaTime)
|
|
||||||
-- self.SuperClass.ReceiveTick(self, DeltaTime);
|
|
||||||
--end
|
|
||||||
|
|
||||||
function UGCPlayerPawn:ReceiveEndPlay()
|
function UGCPlayerPawn:ReceiveEndPlay()
|
||||||
if GlobalTickTool then GlobalTickTool:RemoveTickByOwner(self) end
|
if GlobalTickTool then GlobalTickTool:RemoveTickByOwner(self) end
|
||||||
self.SuperClass.ReceiveEndPlay(self);
|
self.SuperClass.ReceiveEndPlay(self);
|
||||||
end
|
end
|
||||||
|
|
||||||
--function UGCPlayerPawn:GetReplicatedProperties()
|
|
||||||
-- return;
|
|
||||||
--end
|
|
||||||
|
|
||||||
function UGCPlayerPawn:GetAvailableServerRPCs()
|
function UGCPlayerPawn:GetAvailableServerRPCs()
|
||||||
return "UpdateWeaponParts"
|
return "UpdateWeaponParts", "ReplacePartId"
|
||||||
end
|
end
|
||||||
|
|
||||||
function UGCPlayerPawn:ReceivePossessed(NewController)
|
function UGCPlayerPawn:ReceivePossessed(NewController)
|
||||||
@ -227,14 +210,31 @@ UGCPlayerPawn.SlotWeapons = {};
|
|||||||
|
|
||||||
---@param Weapons table<ESurviveWeaponPropSlot, int[]> 插槽武器
|
---@param Weapons table<ESurviveWeaponPropSlot, int[]> 插槽武器
|
||||||
function UGCPlayerPawn:UpdateSlotWeapons(Weapons)
|
function UGCPlayerPawn:UpdateSlotWeapons(Weapons)
|
||||||
|
|
||||||
self.SlotWeapons = TableHelper.DeepCopyTable(Weapons);
|
self.SlotWeapons = TableHelper.DeepCopyTable(Weapons);
|
||||||
for i = 0, ESurviveWeaponPropSlot.SWPS_Max do
|
for i = 0, ESurviveWeaponPropSlot.SWPS_Max do
|
||||||
if self.SlotWeapons[i] then
|
if self.SlotWeapons[i] then
|
||||||
self:CheckHasSlotWeapon(i, self.SlotWeapons[i]);
|
self:CheckHasSlotWeapon(i, self.SlotWeapons[i]);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
self:AddAllTelescopes();
|
||||||
self:CheckSlotWeapons();
|
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
|
end
|
||||||
|
|
||||||
--- 通过插槽检查武器,需要先配置好之后再启动,该方法仅限两把武器,如果只有一把武器,SlotWeapons的第一个值必须为 SWPS_MainShootWeapon1
|
--- 通过插槽检查武器,需要先配置好之后再启动,该方法仅限两把武器,如果只有一把武器,SlotWeapons的第一个值必须为 SWPS_MainShootWeapon1
|
||||||
@ -346,14 +346,14 @@ function UGCPlayerPawn:UpdateWeaponParts(WeaponID, WeaponParts)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
UnrealNetwork.CallUnrealRPC(self:GetPlayerControllerSafety(), self, "RecvWeaponParts", WeaponID, WeaponParts);
|
UnrealNetwork.CallUnrealRPC(self:GetPlayerControllerSafety(), self, "RecvParts", WeaponID, WeaponParts);
|
||||||
end
|
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]) then ArchiveTable[LocalPlayerKey] = {}; end
|
||||||
if table.isEmpty(ArchiveTable[LocalPlayerKey].Weapons) then ArchiveTable[LocalPlayerKey].Weapons = {}; end
|
if table.isEmpty(ArchiveTable[LocalPlayerKey].Weapons) then ArchiveTable[LocalPlayerKey].Weapons = {}; end
|
||||||
ArchiveTable[LocalPlayerKey].Weapons[WeaponID] = Parts;
|
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)
|
UGCEventSystem.SendEvent(EventTypes.UpdateWeapons, WeaponID)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -40,4 +40,6 @@ EventTypes = EventTypes or {
|
|||||||
AllSelectWeaponsAlready = CountTable(); -- 所有存档数据准备就绪
|
AllSelectWeaponsAlready = CountTable(); -- 所有存档数据准备就绪
|
||||||
UpdateEnterWeapons = CountTable(); -- 所有存档数据准备就绪
|
UpdateEnterWeapons = CountTable(); -- 所有存档数据准备就绪
|
||||||
UpdateWeapons = CountTable(); -- 所有存档数据准备就绪
|
UpdateWeapons = CountTable(); -- 所有存档数据准备就绪
|
||||||
|
|
||||||
|
OpenOldWeaponParts = CountTable(); -- 所有存档数据准备就绪
|
||||||
}
|
}
|
||||||
|
@ -546,9 +546,11 @@ function MiniManager:OnMiniRoundFormalStart()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function MiniManager:OnMiniRoundEnd()
|
function MiniManager:OnMiniRoundEnd()
|
||||||
|
if self.State == MiniGameState.ROUND_GAMING then
|
||||||
if self.CurrMiniMode.bGameEnd == false and self.CurrMiniMode.bRoundEnd == false then
|
if self.CurrMiniMode.bGameEnd == false and self.CurrMiniMode.bRoundEnd == false then
|
||||||
table.func(self.CurrMiniMode, "OnTimeExhausted", self.State)
|
table.func(self.CurrMiniMode, "OnTimeExhausted", self.State)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
-- 通知结束了
|
-- 通知结束了
|
||||||
UGCLogSystem.Log("[MiniManager:OnMiniRoundEnd] 结束")
|
UGCLogSystem.Log("[MiniManager:OnMiniRoundEnd] 结束")
|
||||||
self.CurrMiniMode.RoundEndTime = UE.GetServerTime();
|
self.CurrMiniMode.RoundEndTime = UE.GetServerTime();
|
||||||
@ -627,36 +629,6 @@ function MiniManager:OnPawnInit(Pawn)
|
|||||||
end
|
end
|
||||||
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 DeadPlayerKey PlayerKey
|
||||||
---@param KillerPlayerKey PlayerKey
|
---@param KillerPlayerKey PlayerKey
|
||||||
|
@ -110,10 +110,6 @@ function Mini_Solo:ShowSelectWeaponUI()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Mini_Solo:AddPlayer(PlayerKey)
|
|
||||||
self:LoadArchive();
|
|
||||||
end
|
|
||||||
|
|
||||||
function Mini_Solo:OnClientAlready()
|
function Mini_Solo:OnClientAlready()
|
||||||
if IsServer then
|
if IsServer then
|
||||||
for _, PS in pairs(UGCGameSystem.GetAllPlayerController(false)) do
|
for _, PS in pairs(UGCGameSystem.GetAllPlayerController(false)) do
|
||||||
@ -543,6 +539,7 @@ function Mini_Solo:CheckTimeExhausted_Health()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
local Count = table.getCount(Table);
|
local Count = table.getCount(Table);
|
||||||
|
if Count == 0 then return nil; end
|
||||||
if Count == 1 then return Table[1].PlayerKey; end
|
if Count == 1 then return Table[1].PlayerKey; end
|
||||||
table.sort(Table, function(a, b)
|
table.sort(Table, function(a, b)
|
||||||
return a.Health > b.Health;
|
return a.Health > b.Health;
|
||||||
@ -1640,6 +1637,41 @@ function Mini_Solo:PlayerAddWeapon(PlayerKey, Weapon)
|
|||||||
if Weapon then
|
if Weapon then
|
||||||
UGCLogSystem.Log("[Mini_Solo:PlayerAddWeapon] 开始添加")
|
UGCLogSystem.Log("[Mini_Solo:PlayerAddWeapon] 开始添加")
|
||||||
Pawn:AddItem(Weapon, 1, true, EFillBulletType.ClipInfinite);
|
Pawn:AddItem(Weapon, 1, true, EFillBulletType.ClipInfinite);
|
||||||
|
|
||||||
|
-- 添加其他倍镜
|
||||||
|
local NeedAddTelescope = ItemTool.GetOtherTelescopes(Pawn);
|
||||||
|
-- 检查当前武器上是否有倍镜
|
||||||
|
|
||||||
|
for i, v in pairs(NeedAddTelescope) do
|
||||||
|
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
|
||||||
|
|
||||||
-- 启动检测
|
-- 启动检测
|
||||||
self:CloseCheckWeaponTimer();
|
self:CloseCheckWeaponTimer();
|
||||||
self.CheckWeaponTimer = UGCEventSystem.SetTimerLoop(GameState, function()
|
self.CheckWeaponTimer = UGCEventSystem.SetTimerLoop(GameState, function()
|
||||||
@ -1650,16 +1682,6 @@ function Mini_Solo:PlayerAddWeapon(PlayerKey, Weapon)
|
|||||||
end
|
end
|
||||||
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 PlayerStartList table<TeamId, table<int32, APlayerStart>>
|
||||||
---@param Controller UGCPlayerController_C
|
---@param Controller UGCPlayerController_C
|
||||||
function Mini_Solo:SelectPlayerStart(PlayerStartList, Controller)
|
function Mini_Solo:SelectPlayerStart(PlayerStartList, Controller)
|
||||||
|
@ -15,11 +15,9 @@ require(Prefix .. 'RankInformation' .. Post)
|
|||||||
|
|
||||||
function UnableTable()
|
function UnableTable()
|
||||||
ObjectPath = nil;
|
ObjectPath = nil;
|
||||||
WeaponTable = nil;
|
|
||||||
EWeaponTypes = nil;
|
EWeaponTypes = nil;
|
||||||
EWeaponIdType = nil;
|
EWeaponIdType = nil;
|
||||||
WeaponTypeInfo = nil;
|
WeaponTypeInfo = nil;
|
||||||
WeaponTable = nil;
|
|
||||||
EnglishNamedWeapon = nil;
|
EnglishNamedWeapon = nil;
|
||||||
ShootWeaponEnums = nil;
|
ShootWeaponEnums = nil;
|
||||||
EFillBulletType = nil;
|
EFillBulletType = nil;
|
||||||
@ -28,7 +26,6 @@ function UnableTable()
|
|||||||
WeaponTypeParts = nil;
|
WeaponTypeParts = nil;
|
||||||
WeaponParts = nil;
|
WeaponParts = nil;
|
||||||
NamedWeaponParts = nil;
|
NamedWeaponParts = nil;
|
||||||
WeaponSuits = nil;
|
|
||||||
WeaponNameTable = nil;
|
WeaponNameTable = nil;
|
||||||
WeaponAmmoIdMap = nil;
|
WeaponAmmoIdMap = nil;
|
||||||
AmmoTable = nil;
|
AmmoTable = nil;
|
||||||
|
@ -20,9 +20,6 @@ require(Prefix .. 'SoundSystem')
|
|||||||
require(Prefix .. 'GlobalInit')
|
require(Prefix .. 'GlobalInit')
|
||||||
require(Prefix .. 'UGCEventSystem')
|
require(Prefix .. 'UGCEventSystem')
|
||||||
require(Prefix .. 'GlobalTickTool')
|
require(Prefix .. 'GlobalTickTool')
|
||||||
require(Prefix .. 'GlobalBeginTool')
|
|
||||||
require(Prefix .. 'json')
|
|
||||||
|
|
||||||
|
|
||||||
require(Prefix .. 'UGCSystemLibrary')
|
require(Prefix .. 'UGCSystemLibrary')
|
||||||
require(Prefix .. 'MyWeaponSystem')
|
require(Prefix .. 'MyWeaponSystem')
|
||||||
@ -33,11 +30,11 @@ require(Prefix .. 'WidgetLibrary')
|
|||||||
if DefaultSettings.EnableTest then
|
if DefaultSettings.EnableTest then
|
||||||
require(Prefix .. 'TestTool')
|
require(Prefix .. 'TestTool')
|
||||||
|
|
||||||
for i, v in pairs(TestTool) do
|
--for i, v in pairs(TestTool) do
|
||||||
if type(v) == 'function' then
|
-- if type(v) == 'function' then
|
||||||
v(TestTool);
|
-- v(TestTool);
|
||||||
end
|
-- end
|
||||||
end
|
--end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,37 +0,0 @@
|
|||||||
GlobalBeginTool = {};
|
|
||||||
---@type table<table, fun(o: table)> 回调函数
|
|
||||||
GlobalBeginTool.BeginPlayFunctions = {};
|
|
||||||
|
|
||||||
GlobalBeginTool.ClientAlreadyFunctions = {};
|
|
||||||
|
|
||||||
---@generic T
|
|
||||||
---@param o T
|
|
||||||
---@param f fun(o:T) 初始化函数
|
|
||||||
function GlobalBeginTool:AddBeginPlay(o, f)
|
|
||||||
if o == nil then return end
|
|
||||||
if GlobalBeginTool.BeginPlayFunctions[o] ~= nil then return end
|
|
||||||
if type(f) ~= "function" then return end
|
|
||||||
GlobalBeginTool.BeginPlayFunctions[o] = f;
|
|
||||||
end
|
|
||||||
|
|
||||||
---@generic T
|
|
||||||
---@param o T
|
|
||||||
---@param f fun(o:T) 初始化函数
|
|
||||||
function GlobalBeginTool:AddClientAlready(o, f)
|
|
||||||
if o == nil then return end
|
|
||||||
if GlobalBeginTool.ClientAlreadyFunctions[o] ~= nil then return end
|
|
||||||
if type(f) ~= "function" then return end
|
|
||||||
GlobalBeginTool.ClientAlreadyFunctions[o] = f;
|
|
||||||
end
|
|
||||||
|
|
||||||
function GlobalBeginTool:ReceiveBeginPlay()
|
|
||||||
for o, f in pairs(self.BeginPlayFunctions) do f(o); end
|
|
||||||
self.BeginPlayFunctions = {};
|
|
||||||
end
|
|
||||||
|
|
||||||
function GlobalBeginTool:ReceiveClientAlready()
|
|
||||||
for o, f in pairs(self.ClientAlreadyFunctions) do f(o); end
|
|
||||||
self.ClientAlreadyFunctions = {};
|
|
||||||
end
|
|
||||||
|
|
||||||
return GlobalBeginTool;
|
|
@ -571,6 +571,19 @@ function ItemTool.GetWeaponPartList(Weapon)
|
|||||||
return Parts;
|
return Parts;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function ItemTool.GetWeaponPartMap(Weapon)
|
||||||
|
local Parts = {};
|
||||||
|
if Weapon and UE.IsValid(Weapon) and ItemTool.IsShootWeapon(Weapon) then
|
||||||
|
local ItemDefineIDs = UGCGunSystem.GetWeaponAllAttachmentIDList(Weapon);
|
||||||
|
for i, ItemDefineID in pairs(ItemDefineIDs) do
|
||||||
|
if ItemDefineID.bValidItem and ItemDefineID.bValidInstance then
|
||||||
|
Parts[ItemDefineID.TypeSpecificID] = 1;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return Parts;
|
||||||
|
end
|
||||||
|
|
||||||
function ItemTool.GetCurrWeaponPartList(Pawn)
|
function ItemTool.GetCurrWeaponPartList(Pawn)
|
||||||
local Weapon = UGCWeaponManagerSystem.GetCurrentWeapon(Pawn);
|
local Weapon = UGCWeaponManagerSystem.GetCurrentWeapon(Pawn);
|
||||||
return ItemTool.GetWeaponPartList(Weapon);
|
return ItemTool.GetWeaponPartList(Weapon);
|
||||||
@ -733,3 +746,27 @@ function ItemTool.GetFirstWeaponID(PlayerKey)
|
|||||||
return nil;
|
return nil;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- 给玩家添加其他倍镜
|
||||||
|
function ItemTool.GetOtherTelescopes(Pawn)
|
||||||
|
local NeedAdd = {};
|
||||||
|
for i, Enum in pairs(ShootWeaponEnums) do
|
||||||
|
local Weapon = UGCWeaponManagerSystem.GetWeaponBySlot(Pawn, Enum);
|
||||||
|
if ItemTool.IsShootWeapon(Weapon) then
|
||||||
|
local WeaponID = Weapon:GetWeaponItemID();
|
||||||
|
if WeaponSuits[WeaponID] then
|
||||||
|
if WeaponSuits[WeaponID][EWeaponPartType.Telescope] then
|
||||||
|
for _, PartID in pairs(WeaponSuits[WeaponID][EWeaponPartType.Telescope]) do
|
||||||
|
NeedAdd[PartID] = 1;
|
||||||
|
end
|
||||||
|
local PartList = ItemTool.GetWeaponPartMap(Weapon)
|
||||||
|
for PartID, C in pairs(PartList) do
|
||||||
|
if NeedAdd[PartID] then
|
||||||
|
NeedAdd[PartID] = nil;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return NeedAdd;
|
||||||
|
end
|
||||||
|
@ -117,21 +117,18 @@ function UE.InitArchiveData()
|
|||||||
return {
|
return {
|
||||||
TotalGameTimes = 0; -- 经典模式游玩次数,同步
|
TotalGameTimes = 0; -- 经典模式游玩次数,同步
|
||||||
GameTimes = 0, -- 游玩次数(包含所有模式)不同步
|
GameTimes = 0, -- 游玩次数(包含所有模式)不同步
|
||||||
Weapons = {}, -- 武器配件 不同步
|
Weapons = {}, -- 武器配件
|
||||||
Score = DefaultSettings.RankScore, -- 默认 2000分 同步
|
Score = DefaultSettings.RankScore, -- 默认 2000分 同步
|
||||||
WinTimes = 0, -- 一共获胜次数 不同步
|
WinTimes = 0, -- 一共获胜次数 不同步
|
||||||
GameWinTimes = 0, -- 经典模式获胜次数 同步
|
GameWinTimes = 0, -- 经典模式获胜次数 同步
|
||||||
|
|
||||||
Kill = 0, -- 总击杀数 同步
|
Kill = 0, -- 总击杀数 同步
|
||||||
Dead = 0, -- 总死亡数 同步
|
Dead = 0, -- 总死亡数 同步
|
||||||
|
|
||||||
HideScore = 0, -- 隐藏分 同步
|
HideScore = 0, -- 隐藏分 同步
|
||||||
|
|
||||||
Disables = {};
|
Disables = {};
|
||||||
|
|
||||||
-- 最后十局战绩
|
-- 最后十局战绩
|
||||||
Last10Games = {}, -- 历史十局 同步
|
Last10Games = {}, -- 历史十局 同步
|
||||||
|
|
||||||
CurSeason = 0; -- 默认赛季 不同步
|
CurSeason = 0; -- 默认赛季 不同步
|
||||||
--- 赛季信息
|
--- 赛季信息
|
||||||
Seasons = {}; -- 历史赛季 同步
|
Seasons = {}; -- 历史赛季 同步
|
||||||
@ -144,6 +141,8 @@ function UE.InitArchiveData()
|
|||||||
NoSelectMaps = {}; -- 没有选择的地图
|
NoSelectMaps = {}; -- 没有选择的地图
|
||||||
EnterWeaponIndex = nil; -- 娱乐模式的之前选择的 Index
|
EnterWeaponIndex = nil; -- 娱乐模式的之前选择的 Index
|
||||||
EnterWeapons = {}; -- 娱乐模式保存的武器
|
EnterWeapons = {}; -- 娱乐模式保存的武器
|
||||||
|
|
||||||
|
bOldParts = nil, -- 是否默认开启之前的武器配件配置
|
||||||
};
|
};
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,388 +0,0 @@
|
|||||||
--
|
|
||||||
-- json.lua
|
|
||||||
--
|
|
||||||
-- Copyright (c) 2020 rxi
|
|
||||||
--
|
|
||||||
-- Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
-- this software and associated documentation files (the "Software"), to deal in
|
|
||||||
-- the Software without restriction, including without limitation the rights to
|
|
||||||
-- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
||||||
-- of the Software, and to permit persons to whom the Software is furnished to do
|
|
||||||
-- so, subject to the following conditions:
|
|
||||||
--
|
|
||||||
-- The above copyright notice and this permission notice shall be included in all
|
|
||||||
-- copies or substantial portions of the Software.
|
|
||||||
--
|
|
||||||
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
-- SOFTWARE.
|
|
||||||
--
|
|
||||||
|
|
||||||
local json = { _version = "0.1.2" }
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
-- Encode
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
local encode
|
|
||||||
|
|
||||||
local escape_char_map = {
|
|
||||||
[ "\\" ] = "\\",
|
|
||||||
[ "\"" ] = "\"",
|
|
||||||
[ "\b" ] = "b",
|
|
||||||
[ "\f" ] = "f",
|
|
||||||
[ "\n" ] = "n",
|
|
||||||
[ "\r" ] = "r",
|
|
||||||
[ "\t" ] = "t",
|
|
||||||
}
|
|
||||||
|
|
||||||
local escape_char_map_inv = { [ "/" ] = "/" }
|
|
||||||
for k, v in pairs(escape_char_map) do
|
|
||||||
escape_char_map_inv[v] = k
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function escape_char(c)
|
|
||||||
return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte()))
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function encode_nil(val)
|
|
||||||
return "null"
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function encode_table(val, stack)
|
|
||||||
local res = {}
|
|
||||||
stack = stack or {}
|
|
||||||
|
|
||||||
-- Circular reference?
|
|
||||||
if stack[val] then error("circular reference") end
|
|
||||||
|
|
||||||
stack[val] = true
|
|
||||||
|
|
||||||
if rawget(val, 1) ~= nil or next(val) == nil then
|
|
||||||
-- Treat as array -- check keys are valid and it is not sparse
|
|
||||||
local n = 0
|
|
||||||
for k in pairs(val) do
|
|
||||||
if type(k) ~= "number" then
|
|
||||||
error("invalid table: mixed or invalid key types")
|
|
||||||
end
|
|
||||||
n = n + 1
|
|
||||||
end
|
|
||||||
if n ~= #val then
|
|
||||||
error("invalid table: sparse array")
|
|
||||||
end
|
|
||||||
-- Encode
|
|
||||||
for i, v in ipairs(val) do
|
|
||||||
table.insert(res, encode(v, stack))
|
|
||||||
end
|
|
||||||
stack[val] = nil
|
|
||||||
return "[" .. table.concat(res, ",") .. "]"
|
|
||||||
|
|
||||||
else
|
|
||||||
-- Treat as an object
|
|
||||||
for k, v in pairs(val) do
|
|
||||||
if type(k) ~= "string" then
|
|
||||||
error("invalid table: mixed or invalid key types")
|
|
||||||
end
|
|
||||||
table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
|
|
||||||
end
|
|
||||||
stack[val] = nil
|
|
||||||
return "{" .. table.concat(res, ",") .. "}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function encode_string(val)
|
|
||||||
return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function encode_number(val)
|
|
||||||
-- Check for NaN, -inf and inf
|
|
||||||
if val ~= val or val <= -math.huge or val >= math.huge then
|
|
||||||
error("unexpected number value '" .. tostring(val) .. "'")
|
|
||||||
end
|
|
||||||
return string.format("%.14g", val)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local type_func_map = {
|
|
||||||
[ "nil" ] = encode_nil,
|
|
||||||
[ "table" ] = encode_table,
|
|
||||||
[ "string" ] = encode_string,
|
|
||||||
[ "number" ] = encode_number,
|
|
||||||
[ "boolean" ] = tostring,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
encode = function(val, stack)
|
|
||||||
local t = type(val)
|
|
||||||
local f = type_func_map[t]
|
|
||||||
if f then
|
|
||||||
return f(val, stack)
|
|
||||||
end
|
|
||||||
error("unexpected type '" .. t .. "'")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function json.encode(val)
|
|
||||||
return ( encode(val) )
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
-- Decode
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
local parse
|
|
||||||
|
|
||||||
local function create_set(...)
|
|
||||||
local res = {}
|
|
||||||
for i = 1, select("#", ...) do
|
|
||||||
res[ select(i, ...) ] = true
|
|
||||||
end
|
|
||||||
return res
|
|
||||||
end
|
|
||||||
|
|
||||||
local space_chars = create_set(" ", "\t", "\r", "\n")
|
|
||||||
local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",")
|
|
||||||
local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
|
|
||||||
local literals = create_set("true", "false", "null")
|
|
||||||
|
|
||||||
local literal_map = {
|
|
||||||
[ "true" ] = true,
|
|
||||||
[ "false" ] = false,
|
|
||||||
[ "null" ] = nil,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
local function next_char(str, idx, set, negate)
|
|
||||||
for i = idx, #str do
|
|
||||||
if set[str:sub(i, i)] ~= negate then
|
|
||||||
return i
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return #str + 1
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function decode_error(str, idx, msg)
|
|
||||||
local line_count = 1
|
|
||||||
local col_count = 1
|
|
||||||
for i = 1, idx - 1 do
|
|
||||||
col_count = col_count + 1
|
|
||||||
if str:sub(i, i) == "\n" then
|
|
||||||
line_count = line_count + 1
|
|
||||||
col_count = 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
error( string.format("%s at line %d col %d", msg, line_count, col_count) )
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function codepoint_to_utf8(n)
|
|
||||||
-- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa
|
|
||||||
local f = math.floor
|
|
||||||
if n <= 0x7f then
|
|
||||||
return string.char(n)
|
|
||||||
elseif n <= 0x7ff then
|
|
||||||
return string.char(f(n / 64) + 192, n % 64 + 128)
|
|
||||||
elseif n <= 0xffff then
|
|
||||||
return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128)
|
|
||||||
elseif n <= 0x10ffff then
|
|
||||||
return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128,
|
|
||||||
f(n % 4096 / 64) + 128, n % 64 + 128)
|
|
||||||
end
|
|
||||||
error( string.format("invalid unicode codepoint '%x'", n) )
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function parse_unicode_escape(s)
|
|
||||||
local n1 = tonumber( s:sub(1, 4), 16 )
|
|
||||||
local n2 = tonumber( s:sub(7, 10), 16 )
|
|
||||||
-- Surrogate pair?
|
|
||||||
if n2 then
|
|
||||||
return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
|
|
||||||
else
|
|
||||||
return codepoint_to_utf8(n1)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function parse_string(str, i)
|
|
||||||
local res = ""
|
|
||||||
local j = i + 1
|
|
||||||
local k = j
|
|
||||||
|
|
||||||
while j <= #str do
|
|
||||||
local x = str:byte(j)
|
|
||||||
|
|
||||||
if x < 32 then
|
|
||||||
decode_error(str, j, "control character in string")
|
|
||||||
|
|
||||||
elseif x == 92 then -- `\`: Escape
|
|
||||||
res = res .. str:sub(k, j - 1)
|
|
||||||
j = j + 1
|
|
||||||
local c = str:sub(j, j)
|
|
||||||
if c == "u" then
|
|
||||||
local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1)
|
|
||||||
or str:match("^%x%x%x%x", j + 1)
|
|
||||||
or decode_error(str, j - 1, "invalid unicode escape in string")
|
|
||||||
res = res .. parse_unicode_escape(hex)
|
|
||||||
j = j + #hex
|
|
||||||
else
|
|
||||||
if not escape_chars[c] then
|
|
||||||
decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string")
|
|
||||||
end
|
|
||||||
res = res .. escape_char_map_inv[c]
|
|
||||||
end
|
|
||||||
k = j + 1
|
|
||||||
|
|
||||||
elseif x == 34 then -- `"`: End of string
|
|
||||||
res = res .. str:sub(k, j - 1)
|
|
||||||
return res, j + 1
|
|
||||||
end
|
|
||||||
|
|
||||||
j = j + 1
|
|
||||||
end
|
|
||||||
|
|
||||||
decode_error(str, i, "expected closing quote for string")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function parse_number(str, i)
|
|
||||||
local x = next_char(str, i, delim_chars)
|
|
||||||
local s = str:sub(i, x - 1)
|
|
||||||
local n = tonumber(s)
|
|
||||||
if not n then
|
|
||||||
decode_error(str, i, "invalid number '" .. s .. "'")
|
|
||||||
end
|
|
||||||
return n, x
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function parse_literal(str, i)
|
|
||||||
local x = next_char(str, i, delim_chars)
|
|
||||||
local word = str:sub(i, x - 1)
|
|
||||||
if not literals[word] then
|
|
||||||
decode_error(str, i, "invalid literal '" .. word .. "'")
|
|
||||||
end
|
|
||||||
return literal_map[word], x
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function parse_array(str, i)
|
|
||||||
local res = {}
|
|
||||||
local n = 1
|
|
||||||
i = i + 1
|
|
||||||
while 1 do
|
|
||||||
local x
|
|
||||||
i = next_char(str, i, space_chars, true)
|
|
||||||
-- Empty / end of array?
|
|
||||||
if str:sub(i, i) == "]" then
|
|
||||||
i = i + 1
|
|
||||||
break
|
|
||||||
end
|
|
||||||
-- Read token
|
|
||||||
x, i = parse(str, i)
|
|
||||||
res[n] = x
|
|
||||||
n = n + 1
|
|
||||||
-- Next token
|
|
||||||
i = next_char(str, i, space_chars, true)
|
|
||||||
local chr = str:sub(i, i)
|
|
||||||
i = i + 1
|
|
||||||
if chr == "]" then break end
|
|
||||||
if chr ~= "," then decode_error(str, i, "expected ']' or ','") end
|
|
||||||
end
|
|
||||||
return res, i
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local function parse_object(str, i)
|
|
||||||
local res = {}
|
|
||||||
i = i + 1
|
|
||||||
while 1 do
|
|
||||||
local key, val
|
|
||||||
i = next_char(str, i, space_chars, true)
|
|
||||||
-- Empty / end of object?
|
|
||||||
if str:sub(i, i) == "}" then
|
|
||||||
i = i + 1
|
|
||||||
break
|
|
||||||
end
|
|
||||||
-- Read key
|
|
||||||
if str:sub(i, i) ~= '"' then
|
|
||||||
decode_error(str, i, "expected string for key")
|
|
||||||
end
|
|
||||||
key, i = parse(str, i)
|
|
||||||
-- Read ':' delimiter
|
|
||||||
i = next_char(str, i, space_chars, true)
|
|
||||||
if str:sub(i, i) ~= ":" then
|
|
||||||
decode_error(str, i, "expected ':' after key")
|
|
||||||
end
|
|
||||||
i = next_char(str, i + 1, space_chars, true)
|
|
||||||
-- Read value
|
|
||||||
val, i = parse(str, i)
|
|
||||||
-- Set
|
|
||||||
res[key] = val
|
|
||||||
-- Next token
|
|
||||||
i = next_char(str, i, space_chars, true)
|
|
||||||
local chr = str:sub(i, i)
|
|
||||||
i = i + 1
|
|
||||||
if chr == "}" then break end
|
|
||||||
if chr ~= "," then decode_error(str, i, "expected '}' or ','") end
|
|
||||||
end
|
|
||||||
return res, i
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local char_func_map = {
|
|
||||||
[ '"' ] = parse_string,
|
|
||||||
[ "0" ] = parse_number,
|
|
||||||
[ "1" ] = parse_number,
|
|
||||||
[ "2" ] = parse_number,
|
|
||||||
[ "3" ] = parse_number,
|
|
||||||
[ "4" ] = parse_number,
|
|
||||||
[ "5" ] = parse_number,
|
|
||||||
[ "6" ] = parse_number,
|
|
||||||
[ "7" ] = parse_number,
|
|
||||||
[ "8" ] = parse_number,
|
|
||||||
[ "9" ] = parse_number,
|
|
||||||
[ "-" ] = parse_number,
|
|
||||||
[ "t" ] = parse_literal,
|
|
||||||
[ "f" ] = parse_literal,
|
|
||||||
[ "n" ] = parse_literal,
|
|
||||||
[ "[" ] = parse_array,
|
|
||||||
[ "{" ] = parse_object,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
parse = function(str, idx)
|
|
||||||
local chr = str:sub(idx, idx)
|
|
||||||
local f = char_func_map[chr]
|
|
||||||
if f then
|
|
||||||
return f(str, idx)
|
|
||||||
end
|
|
||||||
decode_error(str, idx, "unexpected character '" .. chr .. "'")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function json.decode(str)
|
|
||||||
if type(str) ~= "string" then
|
|
||||||
error("expected argument of type string, got " .. type(str))
|
|
||||||
end
|
|
||||||
local res, idx = parse(str, next_char(str, 1, space_chars, true))
|
|
||||||
idx = next_char(str, idx, space_chars, true)
|
|
||||||
if idx <= #str then
|
|
||||||
decode_error(str, idx, "trailing garbage")
|
|
||||||
end
|
|
||||||
return res
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
return json
|
|
@ -14,6 +14,7 @@
|
|||||||
---@field TextBlock_Parts UTextBlock
|
---@field TextBlock_Parts UTextBlock
|
||||||
---@field TextBlock_WeaponName UTextBlock
|
---@field TextBlock_WeaponName UTextBlock
|
||||||
---@field WB_DamageTextButton UWB_DamageTextButton_C
|
---@field WB_DamageTextButton UWB_DamageTextButton_C
|
||||||
|
---@field WB_OpenOldWeaponParts UWB_OpenOldWeaponParts_C
|
||||||
--Edit Below--
|
--Edit Below--
|
||||||
local WB_WeaponConfiguration = {
|
local WB_WeaponConfiguration = {
|
||||||
bInitDoOnce = false;
|
bInitDoOnce = false;
|
||||||
@ -66,6 +67,8 @@ function WB_WeaponConfiguration:LuaInit()
|
|||||||
Item:SetSelectStyle(1)
|
Item:SetSelectStyle(1)
|
||||||
Item:BindSelectCallBack(self.ClickSelectPart, self)
|
Item:BindSelectCallBack(self.ClickSelectPart, self)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self.WB_OpenOldWeaponParts:LuaInit();
|
||||||
end
|
end
|
||||||
|
|
||||||
function WB_WeaponConfiguration:CloseSelf()
|
function WB_WeaponConfiguration:CloseSelf()
|
||||||
|
37
SoloKing/Script/UI/Tool/WB_OpenOldWeaponParts.lua
Normal file
37
SoloKing/Script/UI/Tool/WB_OpenOldWeaponParts.lua
Normal 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
|
@ -5,6 +5,7 @@
|
|||||||
---@field Button_Test_Custom UButton
|
---@field Button_Test_Custom UButton
|
||||||
---@field Button_TestSide UButton
|
---@field Button_TestSide UButton
|
||||||
---@field CanvasPanel_Test UCanvasPanel
|
---@field CanvasPanel_Test UCanvasPanel
|
||||||
|
---@field CustomizeCanvasPanel_BP_C_4 UCustomizeCanvasPanel_BP_C
|
||||||
---@field Overlay_EnemyHP UOverlay
|
---@field Overlay_EnemyHP UOverlay
|
||||||
---@field TextBlock_1 UTextBlock
|
---@field TextBlock_1 UTextBlock
|
||||||
---@field TextBlock_EnemyHP UTextBlock
|
---@field TextBlock_EnemyHP UTextBlock
|
||||||
@ -38,6 +39,8 @@ function WB_Main:LuaInit()
|
|||||||
UGCEventSystem.AddListener(EventTypes.MiniStateChange, self.OnMiniStateChange, self)
|
UGCEventSystem.AddListener(EventTypes.MiniStateChange, self.OnMiniStateChange, self)
|
||||||
UGCEventSystem.AddListener(EventTypes.ChangeSpector, self.OnChangeSpector, self)
|
UGCEventSystem.AddListener(EventTypes.ChangeSpector, self.OnChangeSpector, self)
|
||||||
UGCEventSystem.AddListener(EventTypes.ShowRoundWin, self.ShowRoundWin, self)
|
UGCEventSystem.AddListener(EventTypes.ShowRoundWin, self.ShowRoundWin, self)
|
||||||
|
UGCEventSystem.AddListener(EventTypes.OpenOldWeaponParts, self.OpenOldWeaponParts, self)
|
||||||
|
UGCEventSystem.AddListener(EventTypes.UpdateArchiveData, self.UpdateArchiveData, self)
|
||||||
|
|
||||||
--- 死亡的时候显示 ID Panel
|
--- 死亡的时候显示 ID Panel
|
||||||
UGCEventSystem.AddListener(EventTypes.PlayerRespawn, function(MainUI, PlayerKey)
|
UGCEventSystem.AddListener(EventTypes.PlayerRespawn, function(MainUI, PlayerKey)
|
||||||
@ -79,9 +82,11 @@ function WB_Main:LuaInit()
|
|||||||
self.WB_PID:LuaInit();
|
self.WB_PID:LuaInit();
|
||||||
self.WB_Title1_2:LuaInit();
|
self.WB_Title1_2:LuaInit();
|
||||||
self.WB_Title2_2:LuaInit();
|
self.WB_Title2_2:LuaInit();
|
||||||
--self.WB_SelectParts:LuaInit();
|
|
||||||
self.WB_ReselectWeaponBtn: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);
|
self:ShowCustomSelectWeaponBtn(false);
|
||||||
|
|
||||||
@ -112,6 +117,21 @@ function WB_Main:LuaInit()
|
|||||||
GameState:UIAlready();
|
GameState:UIAlready();
|
||||||
end
|
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(...)
|
function WB_Main:OnShowPanel(...)
|
||||||
self.WB_PID:SetIDs()
|
self.WB_PID:SetIDs()
|
||||||
end
|
end
|
||||||
|
@ -53,13 +53,13 @@ SwitchesInMaps=((Key="r.Mobile.EnableIBL",Value=0),(Key="s.StreamableDelegateLim
|
|||||||
PlayBindingArray=[]
|
PlayBindingArray=[]
|
||||||
|
|
||||||
[JobOption]
|
[JobOption]
|
||||||
LastJobId=-1
|
LastJobId=600044806
|
||||||
LastWindowsJobId=-1
|
LastWindowsJobId=600026723
|
||||||
LastAndroidJobId=-1
|
LastAndroidJobId=600026723
|
||||||
LastIOSJobId=-1
|
LastIOSJobId=600026723
|
||||||
PakOnly=0
|
PakOnly=1
|
||||||
LastSkipBake=False
|
LastSkipBake=True
|
||||||
LastTargetPlatform=LinuxServer
|
LastTargetPlatform=LinuxServer+WindowsNoEditor+Android_ETC2+IOS+OpenHarmony_ETC2
|
||||||
|
|
||||||
[UGCUploadOption]
|
[UGCUploadOption]
|
||||||
PlatformIndex=0
|
PlatformIndex=0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user