mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-19 07:56:02 +01:00
refactor(streaming): requestWeaponAsset params
This commit is contained in:
@@ -1,45 +1,60 @@
|
|||||||
|
---@alias WeaponResourceFlags
|
||||||
|
---| 1 WRF_REQUEST_BASE_ANIMS
|
||||||
|
---| 2 WRF_REQUEST_COVER_ANIMS
|
||||||
|
---| 4 WRF_REQUEST_MELEE_ANIMS
|
||||||
|
---| 8 WRF_REQUEST_MOTION_ANIMS
|
||||||
|
---| 16 WRF_REQUEST_STEALTH_ANIMS
|
||||||
|
---| 32 WRF_REQUEST_ALL_MOVEMENT_VARIATION_ANIMS
|
||||||
|
---| 31 WRF_REQUEST_ALL_ANIMS
|
||||||
|
|
||||||
|
---@alias ExtraWeaponComponentFlags
|
||||||
|
---| 0 WEAPON_COMPONENT_NONE
|
||||||
|
---| 1 WEAPON_COMPONENT_FLASH
|
||||||
|
---| 2 WEAPON_COMPONENT_SCOPE
|
||||||
|
---| 4 WEAPON_COMPONENT_SUPP
|
||||||
|
---| 8 WEAPON_COMPONENT_SCLIP2
|
||||||
|
---| 16 WEAPON_COMPONENT_GRIP
|
||||||
|
|
||||||
---Load a weapon asset. When called from a thread, it will yield until it has loaded.
|
---Load a weapon asset. When called from a thread, it will yield until it has loaded.
|
||||||
---@param weaponHash string | number
|
---@param weaponType string | number
|
||||||
---@param timeout number? Number of ticks to wait for the asset to load. Default is 500.
|
---@param timeout number? Number of ticks to wait for the asset to load. Default is 500.
|
||||||
---@param p1 number? Unknown. Default is 31.
|
---@param weaponResourceFlags WeaponResourceFlags? Default is 31.
|
||||||
---@param p2 number? Unknown. Default is 0.
|
---@param extraWeaponComponentFlags ExtraWeaponComponentFlags? Default is 0.
|
||||||
---@return string | number? weaponHash
|
---@return string | number? weaponType
|
||||||
function lib.requestWeaponAsset(weaponHash, timeout, p1, p2)
|
function lib.requestWeaponAsset(weaponType, timeout, weaponResourceFlags, extraWeaponComponentFlags)
|
||||||
if HasWeaponAssetLoaded(weaponHash) then return weaponHash end
|
if HasWeaponAssetLoaded(weaponType) then return weaponType end
|
||||||
|
|
||||||
local weaponHashType = type(weaponHash)
|
local weaponTypeType = type(weaponType) --kekw
|
||||||
if weaponHashType ~= 'string' and weaponHashType ~= "number" then
|
|
||||||
error(("expected weaponHash to have type 'string' or 'number' (received %s)"):format(weaponHashType))
|
if weaponTypeType ~= 'string' and weaponTypeType ~= 'number' then
|
||||||
|
error(("expected weaponType to have type 'string' or 'number' (received %s)"):format(weaponTypeType))
|
||||||
end
|
end
|
||||||
|
|
||||||
p1 = p1 or 31
|
if weaponResourceFlags and type(weaponResourceFlags) ~= 'number' then
|
||||||
p2 = p2 or 0
|
error(("expected weaponResourceFlags to have type 'number' (received %s)"):format(type(weaponResourceFlags)))
|
||||||
|
|
||||||
if type(p1) ~= 'number' then
|
|
||||||
error(("expected p1 to have type 'number' (received %s)"):format(type(p1)))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if type(p2) ~= 'number' then
|
if extraWeaponComponentFlags and type(extraWeaponComponentFlags) ~= 'number' then
|
||||||
error(("expected p2 to have type 'number' (received %s)"):format(type(p2)))
|
error(("expected extraWeaponComponentFlags to have type 'number' (received %s)"):format(type(extraWeaponComponentFlags)))
|
||||||
end
|
end
|
||||||
|
|
||||||
RequestWeaponAsset(weaponHash, p1, p2)
|
RequestWeaponAsset(weaponType, weaponResourceFlags or 31, extraWeaponComponentFlags or 0)
|
||||||
|
|
||||||
if coroutine.running() then
|
if coroutine.running() then
|
||||||
timeout = tonumber(timeout) or 500
|
timeout = tonumber(timeout) or 500
|
||||||
|
|
||||||
for _ = 1, timeout do
|
for _ = 1, timeout do
|
||||||
if HasWeaponAssetLoaded(weaponHash) then
|
if HasWeaponAssetLoaded(weaponType) then
|
||||||
return weaponHash
|
return weaponType
|
||||||
end
|
end
|
||||||
|
|
||||||
Wait(0)
|
Wait(0)
|
||||||
end
|
end
|
||||||
|
|
||||||
print(("failed to load weaponHash '%s' after %s ticks"):format(weaponHash, timeout))
|
print(("failed to load weaponType '%s' after %s ticks"):format(weaponType, timeout))
|
||||||
end
|
end
|
||||||
|
|
||||||
return weaponHash
|
return weaponType
|
||||||
end
|
end
|
||||||
|
|
||||||
return lib.requestWeaponAsset
|
return lib.requestWeaponAsset
|
||||||
|
|||||||
@@ -47,9 +47,6 @@ export const requestStreamedTextureDict = (textureDict: string, timeout?: number
|
|||||||
export const requestNamedPtfxAsset = (ptFxName: string, timeout?: number): Promise<string> =>
|
export const requestNamedPtfxAsset = (ptFxName: string, timeout?: number): Promise<string> =>
|
||||||
streamingRequest(RequestNamedPtfxAsset, HasNamedPtfxAssetLoaded, 'ptFxName', ptFxName, timeout);
|
streamingRequest(RequestNamedPtfxAsset, HasNamedPtfxAssetLoaded, 'ptFxName', ptFxName, timeout);
|
||||||
|
|
||||||
export const requestWeaponAsset = (weaponHash: string | number, timeout?: number, p1?: number, p2?: number): Promise<string | number> => {
|
export const requestWeaponAsset = (weaponHash: string | number, timeout?: number, weaponResourceFlags: number = 31, extraWeaponComponentFlags: number = 0): Promise<string | number> => {
|
||||||
p1 = p1 || 31;
|
return streamingRequest(RequestWeaponAsset, HasWeaponAssetLoaded, 'weaponHash', weaponHash, timeout, weaponResourceFlags, extraWeaponComponentFlags);
|
||||||
p2 = p2 || 0;
|
|
||||||
|
|
||||||
return streamingRequest(RequestWeaponAsset, HasWeaponAssetLoaded, 'weaponHash', weaponHash, timeout, p1, p2);
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user