Skip to content

Instantly share code, notes, and snippets.

@throwarray
Last active January 20, 2022 17:39
Show Gist options
  • Save throwarray/aadc1c602ec9beae010f8ba2bbf6c599 to your computer and use it in GitHub Desktop.
Save throwarray/aadc1c602ec9beae010f8ba2bbf6c599 to your computer and use it in GitHub Desktop.

Revisions

  1. throwarray revised this gist Jan 13, 2019. 1 changed file with 48 additions and 43 deletions.
    91 changes: 48 additions & 43 deletions scenes.lua
    Original file line number Diff line number Diff line change
    @@ -37,35 +37,32 @@ function Shovel ()
    SetNetworkIdCanMigrate(NetworkGetNetworkIdFromEntity(shovel), false)
    SetCurrentPedWeapon(playerPed, GetHashKey("weapon_unarmed"), true)

    local sceneId = NetworkCreateSynchronisedScene(
    sceneCoords,
    sceneRot,
    2, true, false, 1065353216, 0, 1065353216
    )

    NetworkAddPedToSynchronisedScene(playerPed, sceneId,
    animDict, "a_burial",
    1.5, -1.5, 262, 0, 1148846080, 0
    )

    TaskPlayAnim(playerPed, "random@burial", "a_burial", 8.0, -4.0, -1, 1, 0, 0, 0, 0);
    --TaskPlayAnim(playerPed, "random@burial", "c_burial", 8.0, -4.0, -1, 1, 0, 0, 0, 0);
    AttachEntityToEntity(shovel, playerPed, GetPedBoneIndex(playerPed, 28422), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 2, 1)

    NetworkStartSynchronisedScene(sceneID)

    SetBlockingOfNonTemporaryEvents(playerPed, 0)

    -- RequestNamedPtfxAsset("scr_burial_dirt")
    --UseParticleFxAssetNextCall("scr_burial_dirt")
    --StartParticleFxNonLoopedOnEntity("scr_burial_dirt", PlayerPedId(), 0.0, 0.0, -0.95, 0.0, 180.0, 0.0, 1065353216, 0, 0, 0)

    Wait(5000)

    NetworkStopSynchronisedScene(sceneId)
    NetworkUnlinkNetworkedSynchronisedScene(sceneId)
    function DropShovel (playerPed, shovel, done)
    Citizen.CreateThread(function ()
    TaskPlayAnim(playerPed, "random@burial", "a_burial_stop", 8.0, -4.0, 2000, 0, 0, 0, 0, 0)

    DetachEntity(shovel, 0, true)
    while GetEntityAnimCurrentTime(playerPed, "random@burial", "a_burial_stop") < 0.355 do
    Wait(0)
    end

    DetachEntity(shovel)
    if done then
    done(shovel)
    end
    end)
    end

    DropShovel(playerPed, shovel)
    SetEntityDynamic(shovel, 0)
    DeleteEntity(shovel)

    --DeleteEntity(shovel)
    end

    function GiveWallet (ped)
    @@ -311,20 +308,22 @@ function ShakePed (ped)
    ClearPedTasks(ped)

    LoadAnimationDictionary(animDict)
    --LoadAnimationDictionary("mini@arm_wrestling")

    local playerPed = PlayerPedId()
    local sceneCoords = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 0.0, -1.0)
    local playerHeading = GetEntityHeading(playerPed)

    local netScene = NetworkCreateSynchronisedScene(sceneCoords, .0, .0, playerHeading - 180.0, 2, 1, 0, 1065353216, 0, 1065353216)
    NetworkAddPedToSynchronisedScene(playerPed, netScene, animDict, "MANLY_HANDSHAKE_LEFT", 8.0, -1.5, 157, 16, 1148846080, 0)
    NetworkAddPedToSynchronisedScene(ped, netScene, animDict, "MANLY_HANDSHAKE_RIGHT", 8.0, -1.5, 157, 16, 1148846080, 0)
    NetworkStartSynchronisedScene(netScene)
    local sceneId = NetworkCreateSynchronisedScene(sceneCoords, GetEntityRotation(playerPed), 2, 1, 0, 1065353216, 0, 1065353216)
    NetworkAddPedToSynchronisedScene(playerPed, sceneId, animDict, "MANLY_HANDSHAKE_LEFT", 8.0, -1.5, 157, 16, 1148846080, 0)
    NetworkAddPedToSynchronisedScene(ped, sceneId, animDict, "MANLY_HANDSHAKE_RIGHT", 8.0, -1.5, 157, 16, 1148846080, 0)
    --NetworkForceLocalUseOfSyncedSceneCamera(sceneId, "aw_ig_intro_alt1_cam", "mini@arm_wrestling")
    NetworkStartSynchronisedScene(sceneId)

    RemoveAnimDict(animDict)
    Wait(7500)
    NetworkStopSynchronisedScene(netScene)
    NetworkUnlinkNetworkedSynchronisedScene(netScene)
    NetworkStopSynchronisedScene(sceneId)
    NetworkUnlinkNetworkedSynchronisedScene(sceneId)
    end

    function Rescue (ped)
    @@ -334,30 +333,35 @@ function Rescue (ped)
    LoadAnimationDictionary(animDict)

    local sceneCoords = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 0.0, 0.0)

    local playerHeading = GetEntityHeading(playerPed)
    local playerRotation = GetEntityRotation(playerPed, 2)


    local sceneId = NetworkCreateSynchronisedScene(sceneCoords,
    0.0, 0.0, 0.0,
    vector3(0.0, 0.0, 36.0),
    2, 1, 0, 1065353216, 0, 1065353216
    )

    NetworkAddPedToSynchronisedScene(ped, sceneId, animDict, "helping_friend_inside_victim", 8.0, -1.5, 157, 16, 1148846080, 0)
    NetworkAddPedToSynchronisedScene(playerPed, sceneId, animDict, "helping_friend_inside_friend", 8.0, -1.5, 157, 16, 1148846080, 0)
    NetworkAddPedToSynchronisedScene(playerPed, sceneId, animDict, "helping_friend_inside_victim", 8.0, -1.5, 157, 16, 1148846080, 0)
    NetworkAddPedToSynchronisedScene(ped, sceneId, animDict, "helping_friend_inside_friend", 8.0, -1.5, 157, 16, 1148846080, 0)

    NetworkForceLocalUseOfSyncedSceneCamera(
    sceneId, "HELPING_FRIEND_INSIDE_CAM", "random@crash_rescue@get_victim_to_friend"
    )
    NetworkStartSynchronisedScene(sceneId)

    NetworkStartSynchronisedScene(sceneId)
    Wait(12000)
    RemoveAnimDict(animDict)
    NetworkStopSynchronisedScene(sceneId)
    NetworkUnlinkNetworkedSynchronisedScene(sceneId)
    end





    Citizen.CreateThread(function ()
    Wait(0)

    @@ -371,24 +375,25 @@ Citizen.CreateThread(function ()

    LoadModel(pedModel)

    local ped = CreatePed(
    4,
    pedModel,
    GetOffsetFromEntityInWorldCoords(playerPed, 1.0, 0.0, -1.0),
    GetEntityHeading(playerPed) - 180.0,
    true,
    false
    )
    SetEntityRegister(ped, 1)
    SetNetworkIdExistsOnAllMachines(PedToNet(ped), 1)
    local ped
    -- ped = CreatePed(
    -- 4,
    -- pedModel,
    -- GetOffsetFromEntityInWorldCoords(playerPed, 1.0, 0.0, -1.0),
    -- GetEntityHeading(playerPed) - 180.0,
    -- true,
    -- false
    -- )
    -- SetEntityRegister(ped, 1)
    -- SetNetworkIdExistsOnAllMachines(PedToNet(ped), 1)

    --GiveWallet(ped)
    --ShakePed(ped)
    Rescue(ped)
    --Rescue(ped)

    if DoesEntityExist(ped) then
    SetEntityDynamic(ped, 0)
    SetEntityAsNoLongerNeeded(ped)
    SetModelAsNoLongerNeeded(pedModel)
    end
    SetModelAsNoLongerNeeded(pedModel)
    end)
  2. throwarray created this gist Jan 13, 2019.
    394 changes: 394 additions & 0 deletions scenes.lua
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,394 @@
    function LoadAnimationDictionary(animationD)
    RequestAnimDict(animationD)
    while not HasAnimDictLoaded(animationD) do
    Citizen.Wait(1)
    end
    end

    function RequestTextureDictionary (dict)
    RequestStreamedTextureDict(dict)

    while not HasStreamedTextureDictLoaded(dict) do Citizen.Wait(0) end

    return dict
    end

    function LoadModel (model)
    RequestModel(model)
    while not HasModelLoaded(model) do
    Citizen.Wait(1)
    end
    end

    --------------------------------------------------------------------------------

    function Shovel ()
    local shovelModel = GetHashKey("prop_ld_shovel")
    local animDict = "random@burial"

    LoadAnimationDictionary(animDict)
    LoadModel(shovelModel)

    local playerPed = PlayerPedId()
    local sceneCoords = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 0.0, -1.0)
    local sceneRot = GetEntityRotation(playerPed, 2)
    local shovel = CreateObject(shovelModel, GetEntityCoords(playerPed), true, false, false)

    SetNetworkIdCanMigrate(NetworkGetNetworkIdFromEntity(shovel), false)
    SetCurrentPedWeapon(playerPed, GetHashKey("weapon_unarmed"), true)

    local sceneId = NetworkCreateSynchronisedScene(
    sceneCoords,
    sceneRot,
    2, true, false, 1065353216, 0, 1065353216
    )

    NetworkAddPedToSynchronisedScene(playerPed, sceneId,
    animDict, "a_burial",
    1.5, -1.5, 262, 0, 1148846080, 0
    )

    AttachEntityToEntity(shovel, playerPed, GetPedBoneIndex(playerPed, 28422), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 2, 1)

    NetworkStartSynchronisedScene(sceneID)

    SetBlockingOfNonTemporaryEvents(playerPed, 0)

    -- RequestNamedPtfxAsset("scr_burial_dirt")
    --UseParticleFxAssetNextCall("scr_burial_dirt")
    --StartParticleFxNonLoopedOnEntity("scr_burial_dirt", PlayerPedId(), 0.0, 0.0, -0.95, 0.0, 180.0, 0.0, 1065353216, 0, 0, 0)

    Wait(5000)

    NetworkStopSynchronisedScene(sceneId)
    NetworkUnlinkNetworkedSynchronisedScene(sceneId)

    DetachEntity(shovel, 0, true)
    SetEntityDynamic(shovel, 0)
    DeleteEntity(shovel)
    end

    function GiveWallet (ped)
    local walletModel = GetHashKey("prop_ld_wallet_pickup")
    local animDict = "RANDOM@ATMROBBERY4"

    LoadAnimationDictionary(animDict)
    LoadModel(walletModel)

    local playerPed = PlayerPedId()
    local wallet = CreateObject(walletModel, GetEntityCoords(PlayerPedId(), true), true, false, false)

    local sceneCoords = GetOffsetFromEntityInWorldCoords(ped, 0.0, 0.0, -1.0)
    local sceneRot = vector3(0.0, 0.0, 0.0)
    local sceneId = NetworkCreateSynchronisedScene(
    sceneCoords,
    sceneRot,
    2, true, false, 1065353216, 0, 1065353216
    )

    NetworkAddPedToSynchronisedScene(playerPed, sceneId,
    animDict, "Return_Wallet_Positive_C_Player",
    1.5, -1.5, 262, 0, 1148846080, 0
    )

    NetworkAddPedToSynchronisedScene(ped, sceneId,
    animDict, "Return_Wallet_Positive_C_Female",
    1.5, -1.5, 262, 0, 1148846080, 0
    )

    SetCurrentPedWeapon(playerPed, GetHashKey("weapon_unarmed"), true)
    AttachEntityToEntity(wallet, playerPed,
    GetPedBoneIndex(playerPed, 28422),
    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 2, 1
    )

    NetworkForceLocalUseOfSyncedSceneCamera(sceneId, animDict,
    "Return_Wallet_Positive_C_Cam"
    )

    NetworkStartSynchronisedScene(sceneID)

    Wait(1800)

    DetachEntity(wallet, 0, true)

    AttachEntityToEntity(wallet, playerPed, GetPedBoneIndex(ped, 28422),
    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 2, 1
    )

    Wait(3200)

    ClearPedTasks(ped)
    NetworkStopSynchronisedScene(sceneId)
    NetworkUnlinkNetworkedSynchronisedScene(sceneId)
    SetEntityDynamic(wallet, false)
    SetEntityAsNoLongerNeeded(wallet)
    DeleteObject(wallet)
    end

    function Roar ()
    LoadAnimationDictionary("ANIM@MP_FM_EVENT@INTRO")
    local sceneId = NetworkCreateSynchronisedScene(GetOffsetFromEntityInWorldCoords(PlayerPedId(), 0.05, 0.5, -1.11), 0.0, 0.0, (GetEntityHeading(PlayerPedId()) + 90.0), 2, false, false, 1065353216, 0, 1065353216)
    NetworkForceLocalUseOfSyncedSceneCamera(sceneId, "ANIM@MP_FM_EVENT@INTRO", "BEAST_TRANSFORM_CAM")
    TaskPlayAnim(PlayerPedId(), "ANIM@MP_FM_EVENT@INTRO", "BEAST_TRANSFORM", 1000.0, -2.0, -1, 0, 0, 0, 0, 0)
    N_0x2208438012482a1a(PlayerPedId(), 0, 0)
    N_0xc9b43a33d09cada7(sceneId)
    print('beastId', sceneId)
    end

    function OtherChest ()
    local playerPed = PlayerPedId()
    local chestModel = GetHashKey("xm_prop_x17_chest_closed")
    local animDict = "anim@TreasureHunt@DoubleAction@Action"

    LoadAnimationDictionary(animDict)
    LoadModel(chestModel)

    local chestCoords = GetOffsetFromEntityInWorldCoords(playerPed, 1.0, 0.0, -1.0)
    local chest = CreateObject(chestModel, chestCoords, true, false, false)
    local sceneCoords = GetEntityCoords(chest)
    local sceneRot = vector3(0.0, 0.0, 0.0)

    SetModelAsNoLongerNeeded(chestModel)

    local sceneId = NetworkCreateSynchronisedScene(
    sceneCoords,
    sceneRot,
    2, true, false, 1065353216, 0, 1065353216
    )

    NetworkAddPedToSynchronisedScene(playerPed, sceneId,
    animDict, "Double_Action_PickUP",
    1.5, -1.5, 262, 0, 1148846080, 0
    )

    NetworkAddEntityToSynchronisedScene(
    chest, sceneId,
    animDict, "Double_Action_PickUP_CHEST",
    1.5, -1.5, 4
    )

    NetworkForceLocalUseOfSyncedSceneCamera(sceneId, animDict, "Double_Action_PickUp_CAM")
    NetworkStartSynchronisedScene(sceneID)

    Wait(13000)
    NetworkStopSynchronisedScene(sceneId)
    NetworkUnlinkNetworkedSynchronisedScene(sceneId)

    FreezeEntityPosition(chest, true)
    PlayEntityAnim(chest, "HOLD_CHEST", animDict, 1000.0, false, 1, 0, 0, 0) -- keeps open
    SetEntityDynamic(chest, 0)
    SetObjectAsNoLongerNeeded(chest)

    RemoveAnimDict(animDict)
    end

    function HatchetChest ()
    local chestModel = GetHashKey('ba_prop_battle_chest_closed')
    local hatchetModel = GetHashKey("w_me_stonehatchet")
    local playerPed = PlayerPedId()

    LoadAnimationDictionary("anim@TreasureHunt@Hatchet@Action")
    LoadModel(hatchetModel)
    LoadModel(chestModel)

    local chestCoords = GetOffsetFromEntityInWorldCoords(playerPed, 1.0, 0.0, -1.0)
    local chest = CreateObject(chestModel, chestCoords, true, false, false)
    local hatchet = CreateObjectNoOffset(hatchetModel, chestCoords, true, false, false)
    SetModelAsNoLongerNeeded(chestModel)
    SetModelAsNoLongerNeeded(hatchetModel)

    SetNetworkIdCanMigrate(NetworkGetNetworkIdFromEntity(chest), false)
    SetNetworkIdCanMigrate(NetworkGetNetworkIdFromEntity(hatchet), false)

    SetEntityProofs(chest, true, true, true, true, true, true, 0, false)

    SetEntityVisible(hatchet, false, 0)
    SetEntityHeading(hatchet, GetEntityHeading(chest))

    local sceneRot = vector3(0.0, 0.0, 0.0) --[[GetAnimInitialOffsetRotation(
    "anim@TreasureHunt@Hatchet@Action", "Hatchet_Pickup",
    vVar1, func_1947(iParam0->f_10), 0, 2
    )]]

    local sceneCoords = GetEntityCoords(chest)

    local sceneId = NetworkCreateSynchronisedScene(
    sceneCoords, sceneRot,
    2, true, false, 1065353216, 0, 1065353216
    )

    NetworkAddPedToSynchronisedScene(
    playerPed, sceneId,
    "anim@TreasureHunt@Hatchet@Action", "Hatchet_Pickup",
    1.5, -1.5, 262, 0, 1148846080, 0
    )

    NetworkAddEntityToSynchronisedScene(
    chest, sceneId,
    "anim@TreasureHunt@Hatchet@Action", "Hatchet_Pickup_chest",
    1.5, -1.5, 4
    )

    NetworkAddEntityToSynchronisedScene(
    hatchet, sceneId,
    "anim@TreasureHunt@Hatchet@Action", "Hatchet_Pickup_Hatchet",
    1.5, -1.5, 4
    )

    local now
    local startTime = GetGameTimer()
    local sceneActive = true

    SetCurrentPedWeapon(PlayerPedId(), GetHashKey("weapon_unarmed"), true)
    SetEntityVisible(hatchet, true, 0)

    NetworkForceLocalUseOfSyncedSceneCamera(
    sceneId, "anim@TreasureHunt@hatchet@Action", "HATCHET_PickUp_CAM"
    )

    RequestScriptAudioBank("DLC_CHRISTMAS2017/FM_TH", false)
    PlaySoundFrontend(-1, "item_found", "dlc_xm_fm_th_sounds", false)
    NetworkStartSynchronisedScene(sceneID)

    local injured = false
    local gainItem = false

    while sceneActive do
    now = GetGameTimer()

    -- check interupted
    if injured then
    sceneActive = false
    -- anim played long enough to grab item?
    if now >= startTime + 8000 then
    gainItem = true
    end
    end

    -- anim is finished
    if now >= startTime + 9000 then
    sceneActive = false
    gainItem = true
    end

    Wait(0)
    end

    DeleteObject(hatchet) -- *

    if gainItem then
    GiveWeaponToPed(playerPed, GetHashKey("weapon_stone_hatchet"), 100, false, true)
    SetCurrentPedWeapon(playerPed, GetHashKey("weapon_stone_hatchet"), true)
    --SetPedCurrentWeaponVisible(playerPed, 1, 1, 1, 0)
    --SetCurrentPedWeapon(playerPed, GetHashKey("weapon_stone_hatchet"), true)
    if injured then

    end
    elseif injured then

    end

    NetworkStopSynchronisedScene(sceneId)
    NetworkUnlinkNetworkedSynchronisedScene(sceneId)
    RemoveAnimDict("anim@TreasureHunt@hatchet@Action")
    ReleaseScriptAudioBank("DLC_CHRISTMAS2017/FM_TH")

    Wait(0)
    if DoesEntityExist(chest) then
    -- PlayEntityAnim(chest, "HOLD_CHEST", "anim@TreasureHunt@Hatchet@Action", 1000.0, false, 1, 0, 0, 0)

    FreezeEntityPosition(chest, true)
    SetEntityDynamic(chest, 0)
    SetObjectAsNoLongerNeeded(chest)
    end
    end

    function ShakePed (ped)
    local animDict = "anim@mp_player_intcelebrationpaired@m_m_manly_handshake"

    ClearPedTasks(PlayerPedId())
    ClearPedTasks(ped)

    LoadAnimationDictionary(animDict)

    local playerPed = PlayerPedId()
    local sceneCoords = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 0.0, -1.0)
    local playerHeading = GetEntityHeading(playerPed)

    local netScene = NetworkCreateSynchronisedScene(sceneCoords, .0, .0, playerHeading - 180.0, 2, 1, 0, 1065353216, 0, 1065353216)
    NetworkAddPedToSynchronisedScene(playerPed, netScene, animDict, "MANLY_HANDSHAKE_LEFT", 8.0, -1.5, 157, 16, 1148846080, 0)
    NetworkAddPedToSynchronisedScene(ped, netScene, animDict, "MANLY_HANDSHAKE_RIGHT", 8.0, -1.5, 157, 16, 1148846080, 0)
    NetworkStartSynchronisedScene(netScene)

    RemoveAnimDict(animDict)
    Wait(7500)
    NetworkStopSynchronisedScene(netScene)
    NetworkUnlinkNetworkedSynchronisedScene(netScene)
    end

    function Rescue (ped)
    local animDict = "random@crash_rescue@get_victim_to_friend"
    local playerPed = PlayerPedId()

    LoadAnimationDictionary(animDict)

    local sceneCoords = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 0.0, 0.0)
    local playerHeading = GetEntityHeading(playerPed)
    local playerRotation = GetEntityRotation(playerPed, 2)


    local sceneId = NetworkCreateSynchronisedScene(sceneCoords,
    vector3(0.0, 0.0, 36.0),
    2, 1, 0, 1065353216, 0, 1065353216
    )

    NetworkAddPedToSynchronisedScene(ped, sceneId, animDict, "helping_friend_inside_victim", 8.0, -1.5, 157, 16, 1148846080, 0)
    NetworkAddPedToSynchronisedScene(playerPed, sceneId, animDict, "helping_friend_inside_friend", 8.0, -1.5, 157, 16, 1148846080, 0)

    NetworkForceLocalUseOfSyncedSceneCamera(
    sceneId, "HELPING_FRIEND_INSIDE_CAM", "random@crash_rescue@get_victim_to_friend"
    )
    NetworkStartSynchronisedScene(sceneId)

    Wait(12000)
    RemoveAnimDict(animDict)
    NetworkStopSynchronisedScene(sceneId)
    NetworkUnlinkNetworkedSynchronisedScene(sceneId)
    end


    Citizen.CreateThread(function ()
    Wait(0)

    --Shovel()
    --OtherChest();
    --HatchetChest()
    --Roar()

    local playerPed = PlayerPedId()
    local pedModel = GetHashKey("mp_m_shopkeep_01")

    LoadModel(pedModel)

    local ped = CreatePed(
    4,
    pedModel,
    GetOffsetFromEntityInWorldCoords(playerPed, 1.0, 0.0, -1.0),
    GetEntityHeading(playerPed) - 180.0,
    true,
    false
    )
    SetEntityRegister(ped, 1)
    SetNetworkIdExistsOnAllMachines(PedToNet(ped), 1)

    --GiveWallet(ped)
    --ShakePed(ped)
    Rescue(ped)

    if DoesEntityExist(ped) then
    SetEntityDynamic(ped, 0)
    SetEntityAsNoLongerNeeded(ped)
    SetModelAsNoLongerNeeded(pedModel)
    end
    end)