Add new scripts sling
do /sling
This commit is contained in:
@@ -0,0 +1,155 @@
|
||||
-- Created by Scully#5775 | https://discord.gg/eNtGFS6
|
||||
Scully.Sling = {
|
||||
WeaponOne = {
|
||||
InUse = false,
|
||||
Hash = nil,
|
||||
Object = nil,
|
||||
Tint = nil,
|
||||
Ammo = 0,
|
||||
Components = {}
|
||||
},
|
||||
WeaponTwo = {
|
||||
InUse = false,
|
||||
Hash = nil,
|
||||
Object = nil,
|
||||
Tint = nil,
|
||||
Ammo = 0,
|
||||
Components = {}
|
||||
}
|
||||
}
|
||||
|
||||
function Scully.Sling.LoadWeaponAsset(weaponModel)
|
||||
if not HasModelLoaded(weaponModel) then
|
||||
RequestModel(weaponModel)
|
||||
while not HasModelLoaded(weaponModel) do
|
||||
Wait(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Scully.Sling.DeleteWeaponAsset(weaponObject)
|
||||
if DoesEntityExist(weaponObject) then
|
||||
while DoesEntityExist(weaponObject) do
|
||||
Wait(0)
|
||||
DeleteObject(weaponObject)
|
||||
SetModelAsNoLongerNeeded(weaponObject)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Scully.Sling.RequestAnimDict(animDict)
|
||||
if not HasAnimDictLoaded(animDict) then
|
||||
RequestAnimDict(animDict)
|
||||
while not HasAnimDictLoaded(animDict) do
|
||||
Wait(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Scully.Sling.ShowNotification(text)
|
||||
BeginTextCommandThefeedPost("STRING")
|
||||
AddTextComponentSubstringPlayerName(text)
|
||||
EndTextCommandThefeedPostTicker(true, true)
|
||||
end
|
||||
|
||||
RegisterCommand(Scully.Command, function(_, args)
|
||||
local playerPed, slingOption = PlayerPedId(), args[1]
|
||||
local currentWeapon = GetSelectedPedWeapon(playerPed)
|
||||
if not slingOption then slingOption = '1' end
|
||||
if slingOption == '1' then slingOption = 'WeaponOne' else slingOption = 'WeaponTwo' end
|
||||
if Scully.Sling[slingOption].InUse then
|
||||
if currentWeapon ~= `WEAPON_UNARMED` then
|
||||
Scully.Sling.ShowNotification('~r~You are already holding a weapon!')
|
||||
return
|
||||
end
|
||||
Scully.Sling.RequestAnimDict('mp_player_intdrink')
|
||||
TaskPlayAnim(playerPed, 'mp_player_intdrink', 'loop_bottle', 8.0, -8.0, 200, 49, 0, 0, 0, 0)
|
||||
local delayTimerOne, delayTimerTwo = 50, 50
|
||||
if slingOption == 'WeaponTwo' then delayTimerOne, delayTimerTwo = 300, 100 end
|
||||
Wait(delayTimerOne)
|
||||
local slingInfo = Scully.Sling[slingOption]
|
||||
AttachEntityToEntity(slingInfo.Object, playerPed, GetPedBoneIndex(playerPed, 18905), 0.0, 0.0, 0.0, 90.0, 90.0, 0.0, 1, 1, 0, 1, 1, 0)
|
||||
Wait(delayTimerTwo)
|
||||
ClearPedTasks(playerPed)
|
||||
RemoveAnimDict('mp_player_intdrink')
|
||||
Scully.Sling.DeleteWeaponAsset(slingInfo.Object)
|
||||
GiveWeaponToPed(playerPed, slingInfo.Hash, slingInfo.Ammo, false, true)
|
||||
Scully.CustomAdd(slingInfo.Hash)
|
||||
SetPedWeaponTintIndex(playerPed, slingInfo.Hash, slingInfo.Tint)
|
||||
for k, v in pairs(slingInfo.Components) do
|
||||
GiveWeaponComponentToPed(playerPed, slingInfo.Hash, k)
|
||||
Scully.Sling.DeleteWeaponAsset(v.Object)
|
||||
end
|
||||
SetPedAmmo(playerPed, slingInfo.Hash, slingInfo.Ammo)
|
||||
Scully.Sling[slingOption] = {
|
||||
InUse = false,
|
||||
Hash = nil,
|
||||
Object = nil,
|
||||
Tint = nil,
|
||||
Ammo = 0,
|
||||
Components = {}
|
||||
}
|
||||
else
|
||||
if currentWeapon == `WEAPON_UNARMED` then
|
||||
Scully.Sling.ShowNotification('~r~You aren\'t holding a weapon!')
|
||||
return
|
||||
end
|
||||
local validWeapon = Scully.Weapons[currentWeapon]
|
||||
if not validWeapon then
|
||||
Scully.Sling.ShowNotification('~r~You can\'t sling this weapon!')
|
||||
return
|
||||
end
|
||||
local weaponComponents = {}
|
||||
for k, v in pairs(validWeapon.Components) do
|
||||
if HasPedGotWeaponComponent(playerPed, currentWeapon, k) then
|
||||
weaponComponents[k] = {
|
||||
Object = nil,
|
||||
Hash = k,
|
||||
Attachment = v.Object,
|
||||
Bone = v.Bone
|
||||
}
|
||||
end
|
||||
end
|
||||
Scully.Sling.LoadWeaponAsset(validWeapon.Object)
|
||||
Scully.Sling[slingOption] = {
|
||||
InUse = true,
|
||||
Hash = currentWeapon,
|
||||
Object = CreateObject(validWeapon.Object, 1.0, 1.0, 1.0, true, true, false),
|
||||
Tint = GetPedWeaponTintIndex(playerPed, currentWeapon),
|
||||
Ammo = GetAmmoInPedWeapon(playerPed, currentWeapon),
|
||||
Components = weaponComponents
|
||||
}
|
||||
local slingInfo = Scully.Sling[slingOption]
|
||||
AttachEntityToEntity(slingInfo.Object, playerPed, GetPedBoneIndex(playerPed, 18905), 0.0, 0.0, 0.0, 90.0, 90.0, 0.0, 1, 1, 0, 1, 1, 0)
|
||||
for k, v in pairs(slingInfo.Components) do
|
||||
Scully.Sling.LoadWeaponAsset(v.Attachment)
|
||||
local attachmentObject = CreateObject(v.Attachment, 1.0, 1.0, 1.0, true, true, false)
|
||||
AttachEntityToEntity(attachmentObject, slingInfo.Object, GetEntityBoneIndexByName(slingInfo.Object, v.Bone), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1, 1, 0, 0, 2, 1)
|
||||
Scully.Sling[slingOption].Components[v.Hash].Object = attachmentObject
|
||||
end
|
||||
SetEntityCollision(slingInfo.Object, false, false)
|
||||
RemoveWeaponFromPed(playerPed, currentWeapon)
|
||||
Scully.CustomRemoval(currentWeapon)
|
||||
SetCurrentPedWeapon(playerPed, `WEAPON_UNARMED`, true)
|
||||
Scully.Sling.RequestAnimDict('mp_player_intdrink')
|
||||
TaskPlayAnim(playerPed, 'mp_player_intdrink', 'loop_bottle', 8.0, -8.0, 200, 49, 0, 0, 0, 0)
|
||||
local delayTimer = 100
|
||||
if slingOption == 'WeaponTwo' then delayTimer = 400 end
|
||||
Wait(delayTimer)
|
||||
ClearPedTasks(playerPed)
|
||||
RemoveAnimDict('mp_player_intdrink')
|
||||
if slingOption == 'WeaponOne' then
|
||||
AttachEntityToEntity(slingInfo.Object, playerPed, GetPedBoneIndex(playerPed, 24816), Scully.AttachPoints[1].Position, Scully.AttachPoints[1].Rotation, 1, 1, 0, 0, 2, 1)
|
||||
else
|
||||
AttachEntityToEntity(slingInfo.Object, playerPed, GetPedBoneIndex(playerPed, 24816), Scully.AttachPoints[2].Position, Scully.AttachPoints[2].Rotation, 1, 1, 0, 0, 2, 1)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
if Scully.KeybindOne ~= '' then
|
||||
RegisterKeyMapping(Scully.Command .. ' 1', 'Sling 1', 'keyboard', Scully.KeybindOne)
|
||||
end
|
||||
|
||||
if Scully.KeybindTwo ~= '' then
|
||||
RegisterKeyMapping(Scully.Command .. ' 2', 'Sling 2', 'keyboard', Scully.KeybindTwo)
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,16 @@
|
||||
-- Created by Scully#5775 | https://discord.gg/eNtGFS6
|
||||
fx_version 'cerulean'
|
||||
|
||||
game 'gta5'
|
||||
|
||||
author 'Scully#5775'
|
||||
description 'very noice weapon sling'
|
||||
version '1.0'
|
||||
|
||||
lua54 'yes'
|
||||
|
||||
shared_script 'config.lua'
|
||||
|
||||
client_scripts {
|
||||
'client/*.lua'
|
||||
}
|
||||
@@ -181,6 +181,7 @@ start DOJRPCARS
|
||||
start AIBackup
|
||||
start cvpiv8
|
||||
start r_pepperspray
|
||||
start scully_sling
|
||||
|
||||
#[-----Discord Perms-----]
|
||||
start Discord-Presence
|
||||
|
||||
Reference in New Issue
Block a user