UGCProjects/Structs.lua
2025-01-04 23:00:19 +08:00

538 lines
18 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---@class PlayerAccountInfo
---@field UID int32
---@field PlayerName string
---@field TeamID int32
---@field Gender bool
---@field PlatformGender bool
---@field PlayerLevel int32
---@field SegmentLevel int32
---@field IconURL string
---@field AvatarBoxId int32
---@alias IsSucceed bool
---@class GameStatePlayerDatas
---@field ArchiveData table<PlayerKey, any>
---@field AccountInfo table<PlayerKey, PlayerAccountInfo>
---@class ArchiveData
---@field GameTimes int32 游戏次数
---@field WinTimes int32 赢游戏次数
---@class EUILayerGroup
---@field Negative int32
---@field Least int32
---@field Bottom int32
---@field Low int32
---@field MainUI int32
---@field Medium int32
---@field High int32
---@field Top int32
---@field Toppest int32
---@field Notice int32
---@class FTimerDelegate
---@class ItemData
---@field ItemID int32
---@field InstanceID int32
---@field Count int32
---@field Type int32
---@field SubType int32
---@field IsAvatar bool
---@class BP_BuffManager
---@alias ItemDataList table<int32, ItemData>
---@class BuffAction
---@field ApplyBuff fun(BuffType: int32, OwnerActor: AActor, ContinueTime: float, ...) 应用 Buff
---@field RemoveBuff fun(BuffType: int32, OwnerActor: AActor, ContinueTime: float, ...) 应用 Buff
---@field Vars any 各种数据
---@class EBuffExecType Buff 执行类型
---@field ByTimes int32 通过次数,次数为零的时候就删除该 Buff
---@field ByDuration int32 通过时间,每隔一段时间就会执行一次
---@field ByTimesAndDuration int32 同时存在次数限制和时间限制,次数到了就会结束,时间到了也会结束
---@class BuffSingleItem
---@field StartTime float 开始时间
---@field EndTime float Buff结束时间
---@field PlayerKey int32 拥有者的玩家 Key
---@field BuffId int32 BuffId
---@field Inst BuffAction Buff 对应执行的文件
---@field Vars table|any 存放的数据
---@class BuffItem
---@field BuffId int32| string | any Buff ID
---@field Items table<int32, BuffSingleItem> 所有Buff
---@field ContinueTime float Buff持续时间
---@field ContinueTimes int32 持续次数
---@class NextUseBuffTimeStruct
---@field StartTime float
---@field EndTime float
---@class TableItemBase
---@field ItemName string
---@field Desc string
---@field WrapperClass string
---@field SmallIcon string
---@field BigIcon string
---@field BigTexture UTexture2D
---@field SmallTexture UTexture2D
---@class WeaponTableItem : TableItemBase
---@field ItemSubId int32
---@field TypeNew EWeaponTypeNew 类型
---@field IconPath string
---@field Enable bool
---@class TypeNameItem
---@field Chinese string
---@field English string
---@class WeaponTypeNameItem : TypeNameItem
---@field SubId string
---@class WeaponPartItem
---@field ID int32
---@field Name string
---@field Desc string
---@field Type EWeaponPartType
---@field Alias string
---@field Icon string
---@field IconTexture UTexture2D
---@class AmmoTableItem
---@field ItemName string
---@field Desc string
---@field Count int32
---@field SmallIcon string
---@class ItemId: int32
---@class PlayerKey:uint32
---@class TeamId: int32
---@class PlayerPawn: UGCPlayerPawn_C
---@class EUIType: int32
---@class Vector: FVector
---@class Vector3D: Vector
---@class uint:uint32
---@class int: int32
---@class PlayerKeys: LuaTable[PlayerKey]<int, PlayerKey>
---@class RoundInfo
---@field CurrRoundTime int32 当前回合次数
---@field RoundState RoundState 当前回合次数
---@field RoundCountTime float 回合倒计时
---@field RoundSettleCountTime float 回合结算倒计时
---@class BuffActionInfoItem
---@field Name string
---@field Path string
---@field EnableInit boolean
---@class PlayerDamageItem
---@field Damage float
---@field PlayerKey PlayerKey
---@class PlayerKDAItem
---@field Kill int32
---@field Dead int32
---@field Assist int32
---@alias PlayerKDAList table<PlayerKey, PlayerKDAItem>
---@class PlayerKDAItem1:PlayerKDAItem
---@field PlayerKey int32
---@field Score float
---@class HUDConfigItem
---@field Path string
---@field bShowOnce bool
---@alias LuaTable:table
---@class Timer 定时器类
---@field InsertTimer fun(IntervalTime:float, Fun:fun(), IsLoop: bool):TimerHandler 添加定时器
---@field RemoveTimer fun(Handle:TimerHandler) 移除定时器
---@class GameplayStatics:UGameplayStatics
---@class STExtraGameplayStatics: USTExtraGameplayStatics
---@class FMiniMapInfo
---@field MapPath string
---@field MapCentre FVector
---@field MapSize float
---@field MapScale float
---@class LevelItem
---@field Icon string
---@field IconSelect string
---@field ShowName string
---@field MapName string
---@field MiniMapInfo FMiniMapInfo
---@class CircleConfigItem
---@field Delay float
---@field Center FVector
---@field Radius float
---@field MoveTime float
---@field Damage float
---@class EMoveType
---@field ROTATE int32
---@field MOVE int32
---@class FSyncLocation
---@field Location FVector
---@field Rotation FRotator
---@class MovingActorInfo
---@field MoveType EMoveType
---@field Speed float 速度
---@field Delay float 延迟时间
---@field StartPos FVector 起始位置
---@field StartRot FRotator 起始旋转
---@field EndPos FVector 终点位置
---@field CurrPos FVector 当前位置
---@field CurrRot FRotator 当前旋转
---@field DeltaPos FVector 每帧移动距离
---@field StartMoveTime float 开 始移动时间(使用当前游戏时间作为开始) = CurrTime
---@field TotalMoveTime float 全程移动时间(从起始点移动到终点的时间)
---@field MoveTime float 当前已经移动的时间(从起始点到现在的时间) = CurrTime - StartMoveTime
---@field IsMove bool 是否移动
---@field MoveDirection FVector 移动方向(每秒的移动方向,注意:该值在默认范围 MovingActorsManager.FrameTime 内改变无效)
---@field Rotation FRotator 旋转方向(每秒旋转的方向)
---@field Func fun(Actor: AActor, DeltaTime: float):bool, FVector, FRotator, bool 当前函数
---@class PlayerKDA_DamageItem
---@field Damage float
---@field KDA PlayerKDAItem1
---@field PlayerKey int32
---@class FBuffAction
---@field GetOwnerPawn fun():UGCPlayerPawn_C
---@field LuaDoAction fun():boolean
---@field LuaUndoAction fun():boolean
---@field LuaResetAction fun():boolean
---@field LuaUpdateAction fun(DeltaSeconds:float):boolean
---@class EWeaponTypes
---@field Melee int32 近战
---@field Sniper int32 狙击枪
---@field Rifle int32 步枪
---@field SubmachineGun int32 冲锋枪
---@field MachineGun int32 机枪
---@field Pistol int32 手枪
---@field Special int32 特殊武器
---@class EWeaponPartType
---@field Best int32 最好的
---@field Muzzle int32 枪口
---@field Grip int32 握把
---@field Telescope int32 瞄准镜
---@field Magazine int32 弹匣
---@field ButtStock int32 枪托
---@class EBombType 炸弹类型
---@field Grenade int32 手榴弹
---@field FireBomb int32 燃烧弹
---@field StunGrenade int32 震爆弹
---@field SmokeBomb int32 烟雾弹
---@class PlayerAttributeItem
---@field MaxHealth float 最大血量,这个是 百分比
---@field Damage float 伤害乘积,产生的伤害会 * 这个数 也是百分比
---@field BodySize float 体型 也是百分比
---@field Speed float 速度 百分比
---@field Shield float 伤害减免 具体值
---@class EWeaponIdType 武器 ID 类型
---@field Rifle int32 步枪
---@field Submachine int32 冲锋枪
---@field Sniper int32 狙击枪
---@field ShotGun int32 霰弹枪
---@field MachineGun int32 机枪
---@field Pistol int32 手枪
---@field RPG int32 RPG
---@field Melee int32 近战武器
---@field Special int32 特殊武器
---@class ECustomItemType
---@field Weapon int32 武器
---@field Part int32 配件
---@field Bullet int32 子弹
---@field Equipment int32 装备
---@field Skin int32 皮肤
---@field Supplies int32 补给品
---@class PlayerInitEquipmentItem
---@field ItemName string|int32
---@field ItemCount int32
---@field ItemCount int32
---@class SceneObjItem
---@field IsLimit bool 是否开启限制;不开启限制每一个 Item 都会有一个
---@field RefreshTime float 刷新的时间
---@field TotalCount float 当前的数量,如果是 > 1 的,那么就按照这个整数来计算,如果是 <= 1 的,那么就按 百分比 来计算
---@field EventType int32
---@field MinLimit int32 场景上最小限制数,当百分比低于这个的时候按这个计数
---@field Enable bool 是否启用,如果不启用,那么直接删除
---@class ESceneObjType
---@field Buff int32
---@field Weapon int32
---@field Supply int32
---@class EPawnBenefitType
---@field Health int32
---@field Damage int32
---@field Speed int32
---@field Jump int32
---@field MaxHealth int32
---@field BodySize int32
---@field Energy int32
---@class EGameProgress
---@field NON_START int32
---@field PREPARE int32
---@field GAMING int32
---@field ENDED int32
---@class EDamage_KDA_SortRule 排序
---@field Damage int32 伤害排序
---@field Kill int32 击杀排序
---@field KDA int32 KDA 排序
---@field KDA_Damage int32 KDA 和伤害 排序
---@field Custom int32 自定义排序
---@class ESceneObjectType
---@field Count int32
---@field Percent int32
---@class ESupplyType
---@field Drink int32
---@field Injection int32
---@field Pills int32
---@field Bandage int32
---@field FirstAid int32
---@field FirstAidbox int32
---@class VehicleItemInfo
---@field Name string
---@field Path string
---@class MoveItemScriptBase
---@field MoveLength float
---@field Init fun()
---@field Move fun(InActor:AActor, InDeltaTime:float, InTimeInterval:float):FVector
---@field Rotate fun(InActor:AActor, InDeltaTime:float, InTimeInterval:float):FRotator
---@field GetStaticMeshString fun():string, FTransform
---@class MachineItemScriptBase
---@field bEnableMachine bool 是否启动
---@field bEnableTick bool 是否启动
---@field Init fun()
---@field Execute fun(InPawn:UGCPlayerPawn_C)
---@field Tick fun(dt:float, st:float)
---@field Exit fun(InPawn:UGCPlayerPawn_C)
---@field ToString fun():string
---@field SetEnable fun():string
---@class MiniGameManager
---@class MiniGameMapType
---@alias PlayerControllerList table<int32, UGCPlayerController_C>
---@alias PlayerPawnList table<int32, UGCPlayerPawn_C>
---@alias PlayerStateList table<int32, UGCPlayerState_C>
---@class MiniGameMode
---@field Owner MiniGameManager
---@field MapIndex int32
---@field CreateTime float
---@field bGameEnd bool
---@field bCanRespawn bool
---@field State MiniGameState
---@field Init fun(MiniGameManager:FMiniGameManager, ...) SC 游戏初始化执行函数,后面的参数是通过 Config 参数列表中传入的
---@field OnPrepare fun() SC 游戏初始化执行函数
---@field OnPrepareEnd fun() SC 游戏准备阶段结束,开始小游戏
---@field OnTick fun(InDeltaTime:float, InServerTime:float) Tick 函数
---@field OnAlready fun() SC 地图加载完成
---@field SetState fun(InState:MiniGameState) S 设置游戏进程时可以执行的操作
---@field OnRoundStart fun(InTimes:int32) SC 游戏回合开始准备
---@field OnRoundFormalStart fun(InTimes:int32, InTime:float) SC 游戏回合开始准备
---@field OnRoundEnd fun(InTimes:int32, Winner:int32, InTime:float) SC 回合结束,进入回合结算阶段
---@field GetRoundWinner fun(InTimes:int32) SC 获取本回合胜利者
---@field GetMiniInfo fun(InName:string) SC 获取内部数据
---@field GetScore fun():table<PlayerKey, float> SC 获取游戏分数
---@field OnGameEnd fun(Scores:table<PlayerKey, float>) SC 游戏结束
---@field SelectPlayerStart fun(PlayerStartList:table<TeamId, table<int32, APlayerStart>>, Controller:UGCPlayerController_C) S 选择玩家出生点,如果不选择,会使用默认选择方式
---@field OnPlayerPossessed fun(Pawn:UGCPlayerPawn_C, NewController:UGCPlayerController_C) SC 当玩家被控制
---@field OnPawnInit fun(Pawn:UGCPlayerPawn_C, Weapons:table<int32, WeaponInfo>|nil) SC 玩家初始化操作
---@field OnPlayerTakeDamage fun(DamagedActor:UGCPlayerPawn_C, Damage:float, DamageType:EDamageType, EventInstigator:UGCPlayerController_C) S 玩家修改伤害函数
---@field BPReceiveDamage fun(DamagedActor:UGCPlayerPawn_C, Damage:float, DamageType:EDamageType, InstigatedBy:UGCPlayerController_C, DamageCauser:AActor) SC 玩家接收到伤害函数
---@field OnPlayerDead fun(DeadPlayerKey:PlayerKey, KillerPlayerKey:PlayerKey) SC 当玩家死亡
---@field OnPlayerRespawn fun(InPlayerKey:PlayerKey) SC 当玩家重生
---@field OnPlayerLeave fun(InPlayerKey:PlayerKey) S 当玩家退出时
---@field OnPlayerGetWeapon fun(Pawn:UGCPlayerPawn_C, Weapon:ASTExtraWeapon) S 当玩家使用武器的时候
---@field OnWeaponBulletHit fun(Pawn:UGCPlayerPawn_C, ShootWeapon:ASTExtraShootWeapon, Bullet:ASTExtraShootWeapon, HitInfo:FHitResult) S 当玩家使用武器的时候
---@field OnRep_State fun(InOld:MiniGameState) C 当改变属性的时候执行
---@field OnRep_RoundTimes fun(InOld:float) C 当改变属性的时候执行
---@field OnRep_xxx fun(InOld:any) C 当改变属性的时候执行
---@class FMiniGameMapIndex: int32
---@class UNewButton:UButton
---@class UNewCheckBox:UCheckBox
---@class FMiniGameManager 游戏模式管理器,需要引入 GlobalTickTool 文件
---@field SelectMaps table<int32, FMiniGameMapIndex> 当前所有玩家选择的地图
---@field Owner UGCGameState_C 默认是 GameSate如果不是可以在具体实例里面实现对应方法
---@field GameConfig table<any> 游戏配置,对应着 MiniGameConfig[self.CurrSelectMap]
---@field CurrMiniMode MiniGameMode 当前小玩法的具体实现,统一入口出口管理
---@field TargetMiniGameCount int32 目标小游戏数量,低于这个数量会自动添加到这个数量
---@field State MiniGameState 模式状态,可以在本实例和 CurrMiniMode 中获取
---@field PlayerData table<PlayerKey, any> 玩家数据
---@field MiniInfo table<int32, any> 小游戏需要同步的数据,会自动执行 OnRep_xxx 函数TODO 后续把这个抽出来单独作为一个类实现
---@field ReceiveBeginPlay fun() SC
---@field OnTick fun(InDeltaTime:float, InServerTime:float 服务器时间) SC tick 函数
---@field OnClientAlready fun() 客户端准备就绪
---@field ChangeTime fun(InTime:float) S 由于全局倒计时只有一个时间(所有状态互斥),因此可以改变任意流程的倒计时
---@field OnGameActive fun() SC 游戏初始化(不需要用它,太早)
---@field OnGameStart fun() SC 游戏正式开始(在准备地图结束后会执行)
---@field OnBeforeGameStart fun(InTime:int32) S 在游戏开始前每秒执行一次
---@field OnGameEnd fun() SC 会自动执行结算模式,在此处是 GameEnd
---@field LoadMiniGame fun(InMiniType:FMiniGameMapIndex) SC 加载服务器客户端的单个玩法,如果单个玩法加载失败,则会循环下一个加载,直到所有已选择的玩法加载完成或者全部失败
---@field UnLoadMiniGame fun() SC 卸载玩法
---@field OnMiniGameTimeCount fun(InVal: float) SC 玩法倒计时(全局只有这一个倒计时)
---@field OnMiniGameEnd fun() 玩法结束
---@field OnMiniGameSwitch fun() 玩法切换
---@field SetRoundTimes fun(InTimes:float) SC 设置回合数
---@field OnRep_RoundTimes fun(InOld:int32) 回合数客户端同步回调
---@field OnRep_State fun(InOld:FMiniGameMapIndex) 状态客户端同步回调
---@field SetMiniInfo fun() 设置同步 MiniInfo
---@field SetGameInfo fun(InName:string, InInfo:any) 设置游戏数据
---@field SendRPC fun(InRPCName:string, ...:vararg) SC 发送RPC传入函数会自动导到对应函数名的函数上
---@field OnPrepareEnd fun() SC 准备结束
---@field GetReplicatedProperties fun():string,string,string,vararg SC 获取需要同步的变量
---@field MakeRepProps fun() SC 组装 Props别用
---@alias String string
---@alias Object UObject
---@alias Rotator FRotator
---@alias Class UClass
---@alias Controller AController
---@alias TArray table
---@alias LuatTable table
---@alias LuaTable table
---@alias Float float
---@alias STExtraWeapon ASTExtraShootWeapon
---@alias WeaponManagerComponent UWeaponManagerComponent
---@alias PlayerController UGCPlayerController_C
---@class EBuffState
---@field None int32
---@field Using int32
---@field Cooling int32
---@class FBuffConfigItem
---@field Name string
---@field Script string
---@field Desc string
---@field Icon string
---@field Continue float 如果是 -1, 那么就是永久的,如果是 nil,就是添加的时候执行的;如果是 0 表示没有持续时间,如果 > 0, 表示当前是持续执行这么长时间的
---@field Cooldown float 如果 >0 表示有这么长时间的冷却,该值只在 Stack <= 1 或者 == nil 的时候有用;否则不起作用
---@field Params table<any> 参数:可以传入内部的参数,可以
---@class SlateBlueprintLibrary:USlateBlueprintLibrary
---@class WidgetLayoutLibrary:UWidgetLayoutLibrary
---@class PoisonConfigItem
---@field delaytime float 延迟时间,当倒计时结束的时候会显示提示,提示结束之后才会开始刷圈
---@field SafeZoneAppeartime float 刷圈前的时间
---@field lasttime float 刷圈时间
---@field blueradius float 蓝圈半径
---@field whiteradius float 白圈半径
---@field pain float 伤害
---@class ManagerBase
---@field OnClientAlready fun()
---@field OnMapLoadComplete fun()
---@field OnPlayerLogin fun(InPlayerKey:PlayerKey)
---@field OnPlayerLeave fun(InPlayerKey:PlayerKey)
---@field OnPawnInit fun(Pawn:UGCPlayerPawn_C)
---@field OnPlayerTakeDamage fun(DamagedActor:UGCPlayerPawn_C, Damage:float, DamageType:EDamageType, EventInstigator:UGCPlayerController_C)
---@field OnPlayerDead fun(DeadPlayerKey:PlayerKey, KillerPlayerKey:PlayerKey)
---@field BPReceiveDamage fun(DamagedActor:UGCPlayerPawn_C, Damage:float, DamageType:EDamageType, InstigatedBy:UGCPlayerController_C, DamageCauser:AActor)
---@field OnPlayerRespawn fun(InPlayerKey:PlayerKey)
---@field OnPlayerPossessed fun(Pawn:UGCPlayerPawn_C, NewController:UGCPlayerController_C)
---@field OnPlayerPickup fun(PlayerController:UGCPlayerController_C, Target:AActor, ItemID:int32, Count:int32)
---@field OnPlayerGetWeapon fun(InPawn:UGCPlayerPawn_C, Weapon:ASTExtraWeapon)
---@field OnWeaponBulletHit fun(InPawn:UGCPlayerPawn_C, ShootWeapon:ASTExtraShootWeapon, Bullet:AProjectileBulletBase, HitInfo:FHitResult)
---@field OnPlayerShoot fun(InPawn:UGCPlayerPawn_C, ShootWeapon:ASTExtraShootWeapon, BulletID:int32)