Scripts/resources/[qb]/[qb_casino]/casino-blackjackRT98/cl_blackjack.lua
2024-12-29 21:03:28 +01:00

3088 lines
126 KiB
Lua

--------------------------------------------
--Created by Robbster, do not redistribute--
--------------------------------------------
--If you're snooping here, before you ask why some function names are horrible things like func_368, its so I could keep track of where I was at in the decompiled scripts :P
local QBCore = exports['qb-core']:GetCoreObject()
local closeToCasino = false
local closestChair = -1
local closestChairDist = 1000
local Local_198f_247 = -1 --this is just closestChair pretty sure
local closestDealerPed = nil
local closestDealerPedDist = 1000
local dealerPeds = {}
local Local_198f_255 = nil
local waitingForBetState = false
local waitingForSitDownState = false
local waitingForStandOrHitState = false
-- local blackjackInstructional = nil
-- local bettingInstructional = nil
local blackjackTableData = {}
-- local timeoutHowToBlackjack = false
local currentBlackjackGameID = 0
local timeLeft = 20
local drawTimerBar = false
local bettedThisRound = false
local standOrHitThisRound = false
local globalGameId = -1
local globalNextCardCount = -1
cardObjects = {}
local drawCurrentHand = false
local currentHand = 0
local dealersHand = 0
currentBetAmount = 0
sittingAtBlackjackTable = false
local canExitBlackjack = false
local dealerSecondCardFromGameId = {}
local blackjackGameInProgress = false
local shouldForceIdleCardGames = false
local cfg = {}
--Please note the config order is important, dealerPositions must start from 0 and increase consecutively
cfg.blackjackTables = {
--[id] = {x,y,z,heading}
[0] = {
dealerPos = vector3(986.018, 59.759, 70.238),
dealerHeading = 10.804,
tablePos = vector3(985.9037, 60.55936, 69.23269),
tableHeading = 188.309,
distance = 1000.0,
prop = "vw_prop_casino_blckjack_01b"
},
[1] = {
dealerPos = vector3(981.661, 62.706, 70.238),
dealerHeading = 282.591,
tablePos = vector3(982.48, 62.90, 69.32),
tableHeading = 103.309,
distance = 1000.0,
prop = "vw_prop_casino_blckjack_01b"
},
[2] = {
dealerPos = vector3(988.644, 46.497, 70.238),
dealerHeading = 199.665,
tablePos = vector3(989.93, 45.7245, 69.23),
tableHeading = 23.309,
distance = 1000.0,
prop = "vw_prop_casino_blckjack_01b"
},
[3] = {
dealerPos = vector3(986.486, 41.996, 70.238),
dealerHeading = 284.971,
tablePos = vector3(987.26, 42.203, 69.232),
tableHeading = 103.309,
distance = 1000.0,
prop = "vw_prop_casino_blckjack_01b"
},
}
--Use this command to get the coords you need for setting up new tables.
--Some maps use the prop vw_prop_casino_blckjack_01 some use vw_prop_casino_blckjack_01b, so change accordingly.
RegisterCommand("getcasinotable",function()
local playerCoords = GetEntityCoords(PlayerPedId())
local blackjackTable = GetClosestObjectOfType(playerCoords.x,playerCoords.y,playerCoords.z,3.0,GetHashKey("vw_prop_casino_blckjack_01"),0,0,0)
if DoesEntityExist(blackjackTable) then
print("Found entity")
print("tablePos pos",GetEntityCoords(blackjackTable))
print("tableHeading heading",GetEntityHeading(blackjackTable))
print("prop: vw_prop_casino_blckjack_01")
else
local blackjackTable2 = GetClosestObjectOfType(playerCoords.x,playerCoords.y,playerCoords.z,3.0,GetHashKey("vw_prop_casino_blckjack_01b"),0,0,0)
if DoesEntityExist(blackjackTable2) then
print("Found entity")
print("tablePos pos:",GetEntityCoords(blackjackTable2))
print("tableHeading heading:",GetEntityHeading(blackjackTable2))
print("prop: vw_prop_casino_blckjack_01")
else
print("Could not find entity")
end
end
end)
CreateThread(function()
TriggerServerEvent("Blackjack:requestBlackjackTableData")
end)
RegisterNetEvent("Blackjack:sendBlackjackTableData")
AddEventHandler("Blackjack:sendBlackjackTableData", function(newBlackjackTableData)
blackjackTableData = newBlackjackTableData
end)
CreateThread(function()
while not closeToCasino do
Wait(0)
end
maleCasinoDealer = GetHashKey("S_M_Y_Casino_01")
femaleCasinoDealer = GetHashKey("S_F_Y_Casino_01")
math.randomseed(GetGameTimer())
dealerAnimDict = "anim_casino_b@amb@casino@games@shared@dealer@"
RequestAnimDict(dealerAnimDict)
while not HasAnimDictLoaded(dealerAnimDict) do
Wait(0)
end
for i=0,#cfg.blackjackTables,1 do
math.random() math.random() math.random()
randomBlackShit = math.random(1,13)
if randomBlackShit < 7 then
dealerModel = maleCasinoDealer
else
dealerModel = femaleCasinoDealer
end
RequestModel(dealerModel)
while not HasModelLoaded(dealerModel) do
RequestModel(dealerModel)
Wait(0)
end
dealerEntity = CreatePed(26,dealerModel,cfg.blackjackTables[i].dealerPos.x,cfg.blackjackTables[i].dealerPos.y,cfg.blackjackTables[i].dealerPos.z,cfg.blackjackTables[i].dealerHeading,false,true)
table.insert(dealerPeds,dealerEntity)
SetModelAsNoLongerNeeded(dealerModel)
SetEntityCanBeDamaged(dealerEntity, 0)
SetPedAsEnemy(dealerEntity, 0)
SetBlockingOfNonTemporaryEvents(dealerEntity, 1)
SetPedResetFlag(dealerEntity, 249, 1)
SetPedConfigFlag(dealerEntity, 185, true)
SetPedConfigFlag(dealerEntity, 108, true)
SetPedCanEvasiveDive(dealerEntity, 0)
SetPedCanRagdollFromPlayerImpact(dealerEntity, 0)
SetPedConfigFlag(dealerEntity, 208, true)
setBlackjackDealerPedVoiceGroup(randomBlackShit,dealerEntity)
setBlackjackDealerClothes(randomBlackShit,dealerEntity)
SetEntityCoordsNoOffset(dealerEntity, cfg.blackjackTables[i].dealerPos.x,cfg.blackjackTables[i].dealerPos.y,cfg.blackjackTables[i].dealerPos.z, 0,0,1)
SetEntityHeading(dealerEntity, cfg.blackjackTables[i].dealerHeading)
if dealerModel == maleCasinoDealer then
TaskPlayAnim(dealerEntity, dealerAnimDict, "idle", 1000.0, -2.0, -1, 2, 1148846080, 0) --anim_name is idle or female_idle depending on gender
else
TaskPlayAnim(dealerEntity, dealerAnimDict, "female_idle", 1000.0, -2.0, -1, 2, 1148846080, 0) --anim_name is idle or female_idle depending on gender
end
PlayFacialAnim(dealerEntity, "idle_facial", dealerAnimDict)
RemoveAnimDict(dealerAnimDict)
end
local blackjackTable = GetClosestObjectOfType(1129.406, 262.3578, -52.041,1.0,GetHashKey("vw_prop_casino_blckjack_01b"),0,0,0)
SetObjectTextureVariant(blackjackTable,3)
local rouletteTable = GetClosestObjectOfType(1132.7875976563,262.42929077148,-51.035781860352,1.0,GetHashKey("vw_prop_casino_roulette_01b"),0,0,0)
SetObjectTextureVariant(rouletteTable,3)
local rouletteTable2 = GetClosestObjectOfType(1130.5859375,266.35610961914,-51.035778045654,1.0,GetHashKey("vw_prop_casino_roulette_01b"),0,0,0)
SetObjectTextureVariant(rouletteTable2,3)
local threeCardPoker = GetClosestObjectOfType(1132.9125976563,265.86212158203,-51.035766601563,1.0,GetHashKey("vw_prop_casino_3cardpoker_01b"),0,0,0)
SetObjectTextureVariant(threeCardPoker,3)
local blackjackTable = GetClosestObjectOfType(1145.3294677734,248.06758117676,-51.035781860352,1.0,GetHashKey("vw_prop_casino_blckjack_01b"),0,0,0)
SetObjectTextureVariant(blackjackTable,3)
local rouletteTable = GetClosestObjectOfType(1147.9478759766,247.95536804199,-51.035766601563,1.0,GetHashKey("vw_prop_casino_roulette_01b"),0,0,0)
SetObjectTextureVariant(rouletteTable,3)
local rouletteTable2 = GetClosestObjectOfType(1144.6773681641,250.74932861328,-51.035762786865,1.0,GetHashKey("vw_prop_casino_roulette_01b"),0,0,0)
SetObjectTextureVariant(rouletteTable2,3)
local threeCardPoker = GetClosestObjectOfType(1147.9067382813,250.86437988281,-51.035781860352,1.0,GetHashKey("vw_prop_casino_3cardpoker_01b"),0,0,0)
SetObjectTextureVariant(threeCardPoker,3)
end)
function resetDealerIdle(dealerPed)
local gender = getDealerGenderFromPed(dealerPed)
if DoesEntityExist(dealerPed) then
if gender == "male" then
genderAnimString = ""
end
if gender == "female" then
genderAnimString = "female_"
end
dealerAnimDict = "anim_casino_b@amb@casino@games@shared@dealer@"
RequestAnimDict(dealerAnimDict)
while not HasAnimDictLoaded(dealerAnimDict) do
Wait(0)
end
-- -- print("playing idle animation: " .. tostring(genderAnimString .. "idle"))
TaskPlayAnim(dealerPed, dealerAnimDict, genderAnimString .. "idle", 1000.0, -2.0, -1, 2, 1148846080, 0) --anim_name is idle or female_idle depending on gender
PlayFacialAnim(dealerPed, "idle_facial", dealerAnimDict)
TaskPlayAnim(PlayerPedId(),"anim_casino_b@amb@casino@games@shared@player@", "idle_cardgames", 1.0, 1.0, -1, 0)
end
end
CreateThread(function()
while true do
if shouldForceIdleCardGames and sittingAtBlackjackTable then
TaskPlayAnim(PlayerPedId(),"anim_casino_b@amb@casino@games@shared@player@", "idle_cardgames", 1.0, 1.0, -1, 0)
end
Wait(0)
end
end)
RegisterNetEvent('doj:client:openBetMenu', function()
exports['qb-menu']:openMenu({
{
header = "The Diamond Casino & Resort Blackjack",
isMenuHeader = true,
},
{
header = "Increase Bet",
txt = "+10",
params = {
event = "doj:client:startingBets",
args = 1
}
},
{
header = "Decrease bet",
txt = "-10",
params = {
event = "doj:client:startingBets",
args = 2
}
},
{
header = "Submit bet",
txt = "",
params = {
event = "doj:client:startingBets",
args = 3
}
},
-- {
-- header = "Custom Bet",
-- txt = "",
-- params = {
-- event = "doj:client:startingBets",
-- args = 4
-- }
-- },
{
header = "Exit",
txt = "",
params = {
event = "doj:client:startingBets",
args = 5
}
},
})
end)
RegisterNetEvent("doj:client:startingBets", function(args)
local args = tonumber(args)
if waitingForBetState then
if args == 1 then
-- -- print("Bet raised")
TriggerEvent("doj:client:openBetMenu")
currentBetAmount = currentBetAmount + 10
elseif args == 2 then
-- -- print("Bet lowered")
TriggerEvent("doj:client:openBetMenu")
if currentBetAmount >= 10 then
currentBetAmount = currentBetAmount - 10
else
QBCore.Functions.Notify("Cannot bet below zero", "error", 3500)
end
elseif args == 3 then
-- -- print("submitting bet")
if tonumber(currentBetAmount) >= 0 then
TriggerServerEvent("Blackjack:setBlackjackBet",globalGameId,currentBetAmount,closestChair)
closestDealerPed = getClosestDealer()
PlayAmbientSpeech1(closestDealerPed,"MINIGAME_DEALER_PLACE_CHIPS","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1) --TODO check this is the right sound?
putBetOnTable()
Wait(1000)
else
QBCore.Functions.Notify("Invalid amount.", "error", 3500)
end
elseif args == 4 then
-- -- print("custom bet")
local tmpInput = getGenericTextInput("Bet Amount")
if tonumber(tmpInput) then
tmpInput = tonumber(tmpInput)
if tmpInput > 0 then
currentBetAmount = tmpInput
end
end
TriggerEvent("doj:client:openBetMenu")
else
-- print('exit')
shouldForceIdleCardGames = false
blackjackAnimDictToLoad = "anim_casino_b@amb@casino@games@shared@player@"
RequestAnimDict(blackjackAnimDictToLoad)
while not HasAnimDictLoaded(blackjackAnimDictToLoad) do
Wait(0)
end
NetworkStopSynchronisedScene(Local_198f_255)
TaskPlayAnim(PlayerPedId(), blackjackAnimDictToLoad, "sit_exit_left", 1.0, 1.0, 2500, 0)
sittingAtBlackjackTable = false
drawTimerBar = false
drawCurrentHand = false
exports['casinoUi']:HideCasinoUi('hide')
waitingForBetState = false
TriggerServerEvent("Blackjack:leaveBlackjackTable")
closestDealerPed, closestDealerPedDistance = getClosestDealer()
PlayAmbientSpeech1(closestDealerPed,"MINIGAME_DEALER_LEAVE_NEUTRAL_GAME","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
end
end
end)
RegisterNetEvent('doj:client:hit&standMenu', function()
exports['qb-menu']:openMenu({
{
header = "The Diamond Casino & Resort Blackjack",
isMenuHeader = true,
},
{
header = "Hit",
txt = "Draw another card",
params = {
event = "doj:client:hit&standActions",
args = 1
}
},
{
header = "Stand",
txt = "Be a pussy",
params = {
event = "doj:client:hit&standActions",
args = 2
}
},
})
end)
RegisterNetEvent("doj:client:hit&standActions", function(args)
local args = tonumber(args)
if waitingForStandOrHitState and sittingAtBlackjackTable and blackjackGameInProgress then
if args == 1 then
-- print("hit")
waitingForStandOrHitState = false
TriggerServerEvent("Blackjack:hitBlackjack",globalGameId,globalNextCardCount)
drawTimerBar = false
standOrHitThisRound = true
requestCard()
else
-- print("stand")
waitingForStandOrHitState = false
TriggerServerEvent("Blackjack:standBlackjack",globalGameId,globalNextCardCount)
drawTimerBar = false
standOrHitThisRound = true
declineCard()
end
end
end)
RegisterNetEvent("Blackjack:successBlackjackBet")
AddEventHandler("Blackjack:successBlackjackBet",function()
bettedThisRound = true
waitingForBetState = false
canExitBlackjack = false
end)
RegisterNetEvent("Blackjack:sitAtBlackjackTable",function(chair)
goToBlackjackSeat(chair)
end)
CreateThread(function()
while true do
local playerCoords = GetEntityCoords(PlayerPedId())
closeToCasino = false
for k,v in pairs(cfg.blackjackTables) do
cfg.blackjackTables[k].distance = #(playerCoords-cfg.blackjackTables[k].tablePos)
if cfg.blackjackTables[k].distance < 100.0 then
closeToCasino = true
end
end
Wait(1000)
end
end)
CreateThread(function()
while true do
local sleep = 5
local playerPed = PlayerPedId()
local inZone = false
if not sittingAtBlackjackTable then
if closestChair ~= nil and closestChairDist < 1.3 then
inZone = true
text = "<b>The Diamond Casino & Resort</p>Blackjack RT98</b></p>Press <b>E</b> to sit"
if not timeoutHowToBlackjack then
if IsControlJustPressed(0, 38) then
if blackjackTableData[closestChair] == false then
print("calling goToBlackjackSeat with chairID: " .. tostring(closestChair))
TriggerServerEvent("Blackjack:requestSitAtBlackjackTable",closestChair)
else
QBCore.Functions.Notify("This seat is taken.", "error", 3500)
end
end
end
end
if inZone and not alreadyEnteredZone then
alreadyEnteredZone = true
exports['qb-core']:DrawText(text, "top")
end
if not inZone and alreadyEnteredZone then
alreadyEnteredZone = false
exports["qb-core"]:HideText()
end
end
Wait(sleep)
end
end)
CreateThread(function()
while true do
if closeToCasino then
closestChairDist = 1000
closestChair = -1
local playerCoords = GetEntityCoords(PlayerPedId())
for i=0,((#cfg.blackjackTables+1)*4)-1,1 do
local vectorOfBlackjackSeat = blackjack_func_348(i)
local distToBlackjackSeat = #(playerCoords - vectorOfBlackjackSeat)
if distToBlackjackSeat < closestChairDist then
closestChairDist = distToBlackjackSeat
closestChair = i
end
end
-- -- print("closestChair = ",closestChair)
end
Wait(100)
end
end)
CreateThread(function()
while true do
if drawTimerBar then
QBCore.Functions.TriggerCallback('BLACKJACKRT98:server:blackChipsAmount', function(result)
retval = result
exports['casinoUi']:DrawCasinoUi('show', "<b>The Diamond Casino & Resort Blackjack</b></p>Time Left: 0:"..timeLeft.."</p>Availble chips: "..math.floor(result).."</p>Current Bet: "..math.floor(currentBetAmount))
end)
end
if drawCurrentHand then
exports['qb-core']:DrawText("<b>Dealers Hand: </b>"..math.floor(dealersHand).."</p><b>Your hand: </b>"..math.floor(currentHand), "top")
end
Wait(250)
end
end)
RegisterNetEvent("Blackjack:syncChipsPropBlackjack")
AddEventHandler("Blackjack:syncChipsPropBlackjack",function(betAmount,chairId)
if closeToCasino then
betBlackjack(betAmount,chairId)
end
end)
RegisterNetEvent("Blackjack:beginBetsBlackjack")
AddEventHandler("Blackjack:beginBetsBlackjack",function(gameID,tableId)
globalGameId = gameID
-- blackjackInstructional = setupBlackjackInstructionalScaleform("instructional_buttons")
-- exports["qb-core"]:HideText()
TriggerEvent("doj:client:openBetMenu")
-- QBCore.Functions.Notify("Place your bets", 'primary', 3500)
exports['qb-core']:DrawText("Place your bets...", "top")
bettedThisRound = false
drawTimerBar = true
drawCurrentHand = false
standOrHitThisRound = false
canExitBlackjack = true
waitingForBetState = true
dealerPed = getDealerFromTableId(tableId)
PlayAmbientSpeech1(dealerPed,"MINIGAME_DEALER_PLACE_BET","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
currentBetAmount = 0
dealersHand = 0
currentHand = 0
SetEntityCoordsNoOffset(dealerPed, cfg.blackjackTables[tableId].dealerPos.x,cfg.blackjackTables[tableId].dealerPos.y,cfg.blackjackTables[tableId].dealerPos.z, 0,0,1)
SetEntityHeading(dealerPed, cfg.blackjackTables[tableId].dealerHeading)
CreateThread(function()
drawTimerBar = true
while timeLeft > 0 do
timeLeft = timeLeft - 1
Wait(1000)
end
timeLeft = 20
drawTimerBar = false
-- if not bettedThisRound then
--QBCore.Functions.Notify("No bet placed, round skipped", 'primary', 3500)
-- end
end)
end)
RegisterNetEvent("Blackjack:beginCardGiveOut")
AddEventHandler("Blackjack:beginCardGiveOut",function(gameId,cardData,chairId,cardIndex,gotCurrentHand,tableId)
if closeToCasino then
blackjackGameInProgress = true
exports['casinoUi']:HideCasinoUi('hide')
blackjackAnimsToLoad = {
"anim_casino_b@amb@casino@games@blackjack@dealer",
"anim_casino_b@amb@casino@games@shared@dealer@",
"anim_casino_b@amb@casino@games@blackjack@player",
"anim_casino_b@amb@casino@games@shared@player@",
}
for k,v in pairs(blackjackAnimsToLoad) do
RequestAnimDict(v)
while not HasAnimDictLoaded(v) do
Wait(0)
end
end
if sittingAtBlackjackTable and bettedThisRound then
drawCurrentHand = true
end
dealerPed = getDealerFromTableId(tableId)
cardObj = startDealing(dealerPed,gameId,cardData,chairId,cardIndex+1,gotCurrentHand,((tableId+1)*4)-1)
if blackjack_func_368(closestChair) == tableId and gameId == chairId and cardIndex == 0 then
dealersHand = gotCurrentHand
-- blackjackInstructional = nil
end
dealerSecondCardFromGameId[gameId] = cardObj
if chairId == closestChair and gameId ~= chairId then
currentHand = gotCurrentHand
-- blackjackInstructional = nil
end
end
end)
RegisterNetEvent("Blackjack:singleCard")
AddEventHandler("Blackjack:singleCard",function(gameId,cardData,chairID,nextCardCount,gotCurrentHand,tableId)
if closeToCasino then
dealerPed = getDealerFromTableId(tableId)
startSingleDealing(chairID,dealerPed,gameId,cardData,nextCardCount+1,gotCurrentHand)
end
end)
RegisterNetEvent("Blackjack:singleDealerCard")
AddEventHandler("Blackjack:singleDealerCard",function(gameId,cardData,nextCardCount,gotCurrentHand,tableId)
if closeToCasino then
dealerPed = getDealerFromTableId(tableId)
startSingleDealerDealing(dealerPed,gameId,cardData,nextCardCount+1,gotCurrentHand,((tableId+1)*4)-1,tableId)
end
end)
RegisterNetEvent("Blackjack:standOrHit")
AddEventHandler("Blackjack:standOrHit",function(gameId,chairId,nextCardCount,tableId)
if closeToCasino then
dealerPed = getDealerFromTableId(tableId)
standOrHitThisRound = false
if closestChair == chairId then
globalNextCardCount = nextCardCount
waitingForStandOrHitState = true
PlayAmbientSpeech1(dealerPed,"MINIGAME_BJACK_DEALER_ANOTHER_CARD","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
TriggerEvent("doj:client:hit&standMenu")
startStandOrHit(gameId,dealerPed,chairId,true)
CreateThread(function()
if sittingAtBlackjackTable then
drawTimerBar = true
timeLeft = 20
while timeLeft > 0 do
timeLeft = timeLeft - 1
if timeLeft == 6 then
PlayAmbientSpeech1(dealerPed,"MINIGAME_DEALER_COMMENT_SLOW","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1) --TODO check this is the right sound?
end
if standOrHitThisRound then
-- -- print("terminating standorhit timer thread")
timeLeft = 20
drawTimerBar = false
return
-- -- print("failed it didnt terminate!")
end
Wait(1000)
end
end
if not standOrHitThisRound and sittingAtBlackjackTable then
-- print("you took too long fam standing shit")
waitingForStandOrHitState = false
TriggerServerEvent("Blackjack:standBlackjack",globalGameId,globalNextCardCount)
declineCard()
QBCore.Functions.Notify("Failed to stand/hit in time, standing.", 'error', 3500)
end
end)
else
startStandOrHit(gameId,dealerPed,chairId,false)
end
end
end)
function getClosestDealer()
local tmpclosestDealerPed = nil
local tmpclosestDealerPedDistance = 100000
local playerCoords = GetEntityCoords(PlayerPedId())
for k,v in pairs(dealerPeds) do
local dealerPed = v
-- -- print("Entity ID of this dealer ped: " .. tostring(dealerPed))
local distanceToDealer = #(playerCoords - GetEntityCoords(dealerPed))
-- -- print("Distance to dealer ped: " .. tostring(distanceToDealer))
if distanceToDealer < tmpclosestDealerPedDistance then
tmpclosestDealerPedDistance = distanceToDealer
tmpclosestDealerPed = dealerPed
end
end
-- -- print("Closest dealer ped is: " .. tostring(tmpclosestDealerPed))
closestDealerPed = tmpclosestDealerPed
closestDealerPedDistance = tmpclosestDealerPedDistance
return closestDealerPed, closestDealerPedDistance
end
function getDealerFromChairId(chairId)
tableId = blackjack_func_368(chairId)
closestDealerPed = dealerPeds[tableId+1]
return closestDealerPed
end
function getDealerFromTableId(tableId)
closestDealerPed = dealerPeds[tableId+1]
return closestDealerPed
end
function goToBlackjackSeat(blackjackSeatID)
sittingAtBlackjackTable = true
waitingForSitDownState = true
canExitBlackjack = true
currentHand = 0
dealersHand = 0
closestDealerPed, closestDealerPedDistance = getClosestDealer()
PlayAmbientSpeech1(closestDealerPed,"MINIGAME_DEALER_GREET","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
-- print("[CMG Casino] start sit at blackjack seat")
exports['qb-core']:DrawText("Waiting for game to start...", "top")
blackjackAnimsToLoad = {
"anim_casino_b@amb@casino@games@blackjack@dealer",
"anim_casino_b@amb@casino@games@shared@dealer@",
"anim_casino_b@amb@casino@games@blackjack@player",
"anim_casino_b@amb@casino@games@shared@player@",
}
for k,v in pairs(blackjackAnimsToLoad) do
RequestAnimDict(v)
while not HasAnimDictLoaded(v) do
Wait(10)
end
end
-- print("[CMG Casino] blackjack anims loaded")
Local_198f_247 = blackjackSeatID
print("blackjackSeatID: " .. blackjackSeatID)
fVar3 = blackjack_func_217(PlayerPedId(),blackjack_func_218(Local_198f_247, 0), 1)
fVar4 = blackjack_func_217(PlayerPedId(),blackjack_func_218(Local_198f_247, 1), 1)
fVar5 = blackjack_func_217(PlayerPedId(),blackjack_func_218(Local_198f_247, 2), 1)
-- print("[CMG Casino] fVars passed")
if (fVar4 < fVar5 and fVar4 < fVar3) then
Local_198f_251 = 1
elseif (fVar5 < fVar4 and fVar5 < fVar3) then
Local_198f_251 = 2
else
Local_198f_251 = 0
end
--blackjack_func_218 is get_anim_offset
--param0 is 0-3 && param1 is 0-15? (OF blackjack_func_218)
local walkToVector = blackjack_func_218(Local_198f_247, Local_198f_251)
local targetHeading = blackjack_func_216(Local_198f_247, Local_198f_251)
-- -- print("[CMG Casino] walking to seat, x: " .. tostring(walkToVector.x) .. " y: " .. tostring(walkToVector.y) .. " z: " .. tostring(walkToVector.z))
TaskGoStraightToCoord(PlayerPedId(), walkToVector.x, walkToVector.y, walkToVector.z, 1.0, 5000, targetHeading, 0.01)
local goToVector = blackjack_func_348(Local_198f_247)
local xRot,yRot,zRot = blackjack_func_215(Local_198f_247)
-- -- print("[CMG Casino] Blackjack sit at table net scene starting")
-- -- print("[CMG Casino] creating Scene at, x: " .. tostring(goToVector.x) .. " y: " .. tostring(goToVector.y) .. " z: " .. tostring(goToVector.z))
Local_198f_255 = NetworkCreateSynchronisedScene(goToVector.x, goToVector.y, goToVector.z, xRot, yRot, zRot, 2, 1, 0, 1065353216, 0, 1065353216)
NetworkAddPedToSynchronisedScene(PlayerPedId(), Local_198f_255, "anim_casino_b@amb@casino@games@shared@player@", blackjack_func_213(Local_198f_251), 2.0, -2.0, 13, 16, 2.0, 0) -- 8.0, -1.5, 157, 16, 1148846080, 0) ?
NetworkStartSynchronisedScene(Local_198f_255)
-- -- print("[CMG Casino] Blackjack sit at table net scene started")
--Local_198.f_255 = NETWORK::NETWORK_CREATE_SYNCHRONISED_SCENE(func_348(Local_198.f_247), func_215(Local_198.f_247), 2, 1, 0, 1065353216, 0, 1065353216)
--NETWORK::NETWORK_ADD_PED_TO_SYNCHRONISED_SCENE(PLAYER::PLAYER_PED_ID(), Local_198.f_255, "anim_casino_b@amb@casino@games@shared@player@", blackjack_func_213(Local_198f_251), 2f, -2f, 13, 16, 2f, 0)
--NETWORK::NETWORK_START_SYNCHRONISED_SCENE(Local_198.f_255)
--NEXT --> Line 5552
Citizen.InvokeNative(0x79C0E43EB9B944E2, -2124244681)
Wait(6000)
-- -- print("STOP STITTING ")
--Wait for sit down anim to end
Locali98f_55 = NetworkCreateSynchronisedScene(goToVector.x, goToVector.y, goToVector.z, xRot, yRot, zRot, 2, 1, 1, 1065353216, 0, 1065353216)
NetworkAddPedToSynchronisedScene(PlayerPedId(), Locali98f_55, "anim_casino_b@amb@casino@games@shared@player@", "idle_cardgames", 2.0, -2.0, 13, 16, 1148846080, 0)
NetworkStartSynchronisedScene(Locali98f_55)
StartAudioScene("DLC_VW_Casino_Table_Games") --need to stream this
Citizen.InvokeNative(0x79C0E43EB9B944E2, -2124244681)
waitingForSitDownState = false
shouldForceIdleCardGames = true
end
function betBlackjack(amount,chairId)
local chipsProp = getChipPropFromAmount(amount)
--betChipsForNextHand(100,chipsProp,pos,chairId,false,stack/100) --false or true no clue
-- for stack=1,10,1 do
-- for pos=0,1,1 do --can be 0 to 3, however last 2 chip x/y positions are for a split I think
-- end
-- end
for i,v in ipairs(chipsProp) do
betChipsForNextHand(100,v,0,chairId,false,(i-1)/200) --false or true no clue
end
end
function startSingleDealerDealing(dealerPed,gameId,cardData,nextCardCount,gotCurrentHand,chairId,tableId)
-- -- print("startSingleDealerDealing", chairId)
N_0x469f2ecdec046337(1)
StartAudioScene("DLC_VW_Casino_Cards_Focus_Hand") --need to stream this
ensureCardModelsLoaded() --request all 52 card models
--AUDIO::_0xF8AD2EED7C47E8FE(iVar1, false, 1); call sound on dealer
----------------THIS CREATES A CARD AT THE MACHINE WHERE THE CARD COMES OUT OF-----------------------
-- -- print("dealerPed: " .. tostring(dealerPed))
-- -- print("DoesEntityExist(dealerPed): " .. tostring(DoesEntityExist(dealerPed)))
-- -- print("NetworkHasControlOfEntity(dealerPed): " .. tostring(NetworkHasControlOfEntity(dealerPed)))
local gender = getDealerGenderFromPed(dealerPed)
-- -- print("getLocalChairIdFromGlobalChairId: " .. tostring(getLocalChairIdFromGlobalChairId))
if DoesEntityExist(dealerPed) then
cardPosition = nextCardCount
-- -- print("getLocalChairIdFromGlobalChairId: " .. tostring(getLocalChairIdFromGlobalChairId))
nextCard = getCardFromNumber(cardData,true)
local nextCardObj = getNewCardFromMachine(nextCard,chairId,gameId)
AttachEntityToEntity(nextCardObj, dealerPed, GetPedBoneIndex(dealerPed,28422), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 1, 2, 1)
if gender == "male" then
genderAnimString = ""
end
if gender == "female" then
genderAnimString = "female_"
end
dealerGiveSelfCard(genderAnimString,dealerPed,3,nextCardObj)
DetachEntity(nextCardObj,false,true)
-- -- print("blackjack_func_368(closestChair)",blackjack_func_368(closestChair))
-- -- print("tableId",tableId)
if blackjack_func_368(closestChair) == tableId then
dealersHand = gotCurrentHand
end
local soundCardString = "MINIGAME_BJACK_DEALER_" .. tostring(gotCurrentHand)
PlayAmbientSpeech1(dealerPed,soundCardString,"SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
vVar8 = vector3(0.0, 0.0, getTableHeading(blackjack_func_368(chairId)))
local tablePosX,tablePosY,tablePosZ = getTableCoords(blackjack_func_368(chairId))
local cardQueue = cardPosition -- number of card
local iVar5 = cardQueue
cardOffsetX,cardOffsetY,cardOffsetZ = blackjack_func_377(iVar5, 4, 1) --iVar9 is seat number 0-3
local cardPos = GetObjectOffsetFromCoords(tablePosX, tablePosY, tablePosZ, vVar8.z, cardOffsetX, cardOffsetY, cardOffsetZ)
SetEntityCoordsNoOffset(nextCardObj, cardPos.x, cardPos.y, cardPos.z, 0, 0, 1)
Wait(400)
else
-- -- print("Failed to deal cards, entity doesn't exist or we don't have control")
end
end
function startSingleDealing(chairId,dealerPed,gameId,cardData,nextCardCount,gotCurrentHand)
N_0x469f2ecdec046337(1)
StartAudioScene("DLC_VW_Casino_Cards_Focus_Hand") --need to stream this
ensureCardModelsLoaded()
local gender = getDealerGenderFromPed(dealerPed)
if DoesEntityExist(dealerPed) then
local localChairId = getLocalChairIdFromGlobalChairId(chairId)
cardPosition = nextCardCount
nextCard = getCardFromNumber(cardData,true)
local nextCardObj = getNewCardFromMachine(nextCard,chairId)
AttachEntityToEntity(nextCardObj, dealerPed, GetPedBoneIndex(dealerPed,28422), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 1, 2, 1)
if gender == "male" then
genderAnimString = ""
end
if gender == "female" then
genderAnimString = "female_"
end
dealerGiveCards(chairId,genderAnimString,dealerPed,nextCardObj)
DetachEntity(nextCardObj,false,true)
if chairId == closestChair then
currentHand = gotCurrentHand
end
local soundCardString = "MINIGAME_BJACK_DEALER_" .. tostring(gotCurrentHand)
-- -- print("trying soundString: " .. tostring(soundCardString))
PlayAmbientSpeech1(dealerPed,soundCardString,"SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
vVar8 = vector3(0.0, 0.0, getTableHeading(blackjack_func_368(chairId)))
local tablePosX,tablePosY,tablePosZ = getTableCoords(blackjack_func_368(chairId))
local cardQueue = cardPosition -- number of card
local iVar5 = cardQueue
local iVar9 = localChairId - 1-- <-ChairID 0-3
if iVar9 <= 4 then
-- -- print("single card pos: " .. tostring(iVar5))
cardOffsetX,cardOffsetY,cardOffsetZ = blackjack_func_377(iVar5, iVar9, 0) --iVar9 is seat number 0-3
else
cardOffsetX,cardOffsetY,cardOffsetZ = 0.5737, 0.2376, 0.948025
end
local cardPos = GetObjectOffsetFromCoords(tablePosX, tablePosY, tablePosZ, vVar8.z, cardOffsetX, cardOffsetY, cardOffsetZ)
SetEntityCoordsNoOffset(nextCardObj, cardPos.x, cardPos.y, cardPos.z, 0, 0, 1)
vVar8 = vector3(0.0, 0.0, getTableHeading(blackjack_func_368(chairId)))
cardObjectOffsetRotation = vVar8 + func_376(iVar5, iVar9, 0, false)
SetEntityRotation(nextCardObj, cardObjectOffsetRotation.x, cardObjectOffsetRotation.y, cardObjectOffsetRotation.z, 2, 1)
Wait(400)
else
-- print("Failed to deal cards, entity doesn't exist or we don't have control")
end
end
function startDealing(dealerPed,gameId,cardData,chairId,cardIndex,gotCurrentHand,fakeChairIdForDealerTurn)
-- print("startDealing()")
--NEXT --> func_90 the FAT FUNCTION
N_0x469f2ecdec046337(1)
StartAudioScene("DLC_VW_Casino_Cards_Focus_Hand") --need to stream this
ensureCardModelsLoaded() --request all 52 card models
--AUDIO::_0xF8AD2EED7C47E8FE(iVar1, false, 1); call sound on dealer
----------------THIS CREATES A CARD AT THE MACHINE WHERE THE CARD COMES OUT OF-----------------------
-- print("dealerPed: " .. tostring(dealerPed))
-- print("DoesEntityExist(dealerPed): " .. tostring(DoesEntityExist(dealerPed)))
-- print("NetworkHasControlOfEntity(dealerPed): " .. tostring(NetworkHasControlOfEntity(dealerPed)))
local gender = getDealerGenderFromPed(dealerPed)
if DoesEntityExist(dealerPed) then
-- print("startDealing() - entityExists")
-- print("request cardId: " .. tostring(cardData[cardIndex]))
nextCard = getCardFromNumber(cardData[cardIndex],true)
local nextCardObj = getNewCardFromMachine(nextCard,chairId)
AttachEntityToEntity(nextCardObj, dealerPed, GetPedBoneIndex(dealerPed,28422), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 1, 2, 1)
if gender == "male" then
genderAnimString = ""
end
if gender == "female" then
genderAnimString = "female_"
end
if chairId <= 1000 then
-- print("[blackjack] giving player cards")
dealerGiveCards(chairId,genderAnimString,dealerPed,nextCardObj)
else
-- print("[blackjack] giving dealers cards")
dealerGiveSelfCard(genderAnimString,dealerPed,cardIndex,nextCardObj)
end
DetachEntity(nextCardObj,false,true)
if chairId ~= gameId or cardIndex ~= 2 then
local soundCardString = "MINIGAME_BJACK_DEALER_" .. tostring(gotCurrentHand)
-- print("trying soundString: " .. tostring(soundCardString))
PlayAmbientSpeech1(dealerPed,soundCardString,"SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
end
--ENTITY::SET_ENTITY_COORDS_NO_OFFSET(Local_198.f_648[iVar6], OBJECT::_GET_OBJECT_OFFSET_FROM_COORDS(func_70(iVar2), vVar8.z, func_377(iVar5, iVar9, 0)), 0, 0, 1);
--ENTITY::SET_ENTITY_ROTATION(Local_198.f_648[iVar6], vVar8 + func_376(iVar5, iVar9, 0, func_380(iVar6)), 2, 1);
cardQueue = cardIndex -- number of card
iVar5 = cardQueue
iVar9 = chairId -- <-localChairId 0-3
if chairId <= 1000 then
vVar8 = vector3(0.0, 0.0, getTableHeading(blackjack_func_368(chairId)))
tablePosX,tablePosY,tablePosZ = getTableCoords(blackjack_func_368(chairId))
cardOffsetX,cardOffsetY,cardOffsetZ = blackjack_func_377(iVar5, getLocalChairIndexFromGlobalChairId(chairId), 0) --iVar9 is the local seat number 0-3
else
vVar8 = vector3(0.0, 0.0, getTableHeading(blackjack_func_368(fakeChairIdForDealerTurn)))
tablePosX,tablePosY,tablePosZ = getTableCoords(blackjack_func_368(fakeChairIdForDealerTurn))
cardOffsetX,cardOffsetY,cardOffsetZ = blackjack_func_377(iVar5, 4, 1)
end
local cardPos = GetObjectOffsetFromCoords(tablePosX, tablePosY, tablePosZ, vVar8.z, cardOffsetX, cardOffsetY, cardOffsetZ)
SetEntityCoordsNoOffset(nextCardObj, cardPos.x, cardPos.y, cardPos.z, 0, 0, 1)
-- print("fakeChairIdForDealerTurn",fakeChairIdForDealerTurn)
if chairId <= 1000 then
vVar8 = vector3(0.0, 0.0, getTableHeading(blackjack_func_368(chairId)))
cardObjectOffsetRotation = vVar8 + func_376(iVar5, getLocalChairIndexFromGlobalChairId(chairId), 0, false)
SetEntityRotation(nextCardObj, cardObjectOffsetRotation.x, cardObjectOffsetRotation.y, cardObjectOffsetRotation.z, 2, 1)
else
cardObjectOffsetRotation = blackjack_func_398(blackjack_func_368(fakeChairIdForDealerTurn))
end
-- print("checking betttingInstructional",closestChair,chairId)
if closestChair == chairId and sittingAtBlackjackTable then
bettingInstructional = setupBlackjackMidBetScaleform("instructional_buttons")
end
--soundID = GetSoundId()
--PlaySoundFromEntity(soundID,"DLC_VW_CHIP_BET_SML_MEDIUM",nextCardObj,"dlc_vw_table_games_sounds", 0, 0)
return nextCardObj
else
-- print("Failed to deal cards, entity doesn't exist or we don't have control")
end
end
function startStandOrHit(gameId,dealerPed,chairId,actuallyPlaying)
chairAnimId = getLocalChairIdFromGlobalChairId(chairId)
gender = getDealerGenderFromPed(dealerPed)
if gender == "male" then
genderAnimString = ""
end
if gender == "female" then
genderAnimString = "female_"
end
-- -- print("dealerPed: " .. tostring(dealerPed))
-- -- print("chairAnimId: " .. tostring(chairAnimId))
-- -- print("genderAnimString: " .. tostring(genderAnimString))
RequestAnimDict("anim_casino_b@amb@casino@games@blackjack@dealer")
while not HasAnimDictLoaded("anim_casino_b@amb@casino@games@blackjack@dealer") do
Wait(0)
end
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", genderAnimString .. "dealer_focus_player_0" .. chairAnimId .. "_idle_intro", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
PlayFacialAnim(dealerPed, genderAnimString .. "dealer_focus_player_0" .. chairAnimId .. "_idle_facial", "anim_casino_b@amb@casino@games@blackjack@dealer")
Wait(0)
while IsEntityPlayingAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", genderAnimString .. "dealer_focus_player_0" .. chairAnimId .. "_idle_intro") do
Wait(10)
-- -- print("waiting for anim to end #1")
end
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", genderAnimString .. "dealer_focus_player_0" .. chairAnimId .. "_idle", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
if actuallyPlaying then
waitingForPlayerToHitOrStand = true
end
end
function flipDealerCard(dealerPed,gotCurrentHand,tableId,gameId)
cardObj = dealerSecondCardFromGameId[gameId]
local cardX,cardY,cardZ = GetEntityCoords(cardObj)
local gender = getDealerGenderFromPed(dealerPed)
if gender == "male" then
genderAnimString = ""
end
if gender == "female" then
genderAnimString = "female_"
end
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", genderAnimString .. "check_and_turn_card", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
--PlayFacialAnim(dealerPed, genderAnimString .. "check_and_turn_card_facial", "anim_casino_b@amb@casino@games@blackjack@dealer")
while not HasAnimEventFired(dealerPed,-1345695206) do
-- print("waiting for -1345695206 to fire")
Wait(0)
end
AttachEntityToEntity(cardObj, dealerPed, GetPedBoneIndex(dealerPed,28422), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 1, 2, 1)
while not HasAnimEventFired(dealerPed,585557868) do
Wait(0)
end
DetachEntity(cardObj,false,true)
if blackjack_func_368(closestChair) == tableId then
dealersHand = gotCurrentHand
end
local soundCardString = "MINIGAME_BJACK_DEALER_" .. tostring(gotCurrentHand)
PlayAmbientSpeech1(dealerPed,soundCardString,"SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
SetEntityCoordsNoOffset(cardObj, cardX,cardY,cardZ)
end
function checkCard(dealerPed,cardObj)
local cardX,cardY,cardZ = GetEntityCoords(cardObj)
AttachEntityToEntity(cardObj, dealerPed, GetPedBoneIndex(dealerPed,28422), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 1, 2, 1)
local gender = getDealerGenderFromPed(dealerPed)
if gender == "male" then
genderAnimString = ""
end
if gender == "female" then
genderAnimString = "female_"
end
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", genderAnimString .. "check_card", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
PlayFacialAnim(dealerPed, genderAnimString .. "check_card_facial", "anim_casino_b@amb@casino@games@blackjack@dealer")
while not HasAnimEventFired(dealerPed,585557868) do
Wait(0)
end
Wait(100)
DetachEntity(cardObj,false,true)
SetEntityCoordsNoOffset(cardObj, cardX,cardY,cardZ)
end
RegisterNetEvent("Blackjack:endStandOrHitPhase")
AddEventHandler("Blackjack:endStandOrHitPhase",function(chairId,tableId)
if closeToCasino then
dealerPed = getDealerFromTableId(tableId)
waitingForPlayerToHitOrStand = false
chairAnimId = getLocalChairIdFromGlobalChairId(chairId)
gender = getDealerGenderFromPed(dealerPed)
if gender == "male" then
genderAnimString = ""
end
if gender == "female" then
genderAnimString = "female_"
end
-- print("dealer ending anim: " .. "anim_casino_b@amb@casino@games@blackjack@dealer", genderAnimString .. "dealer_focus_player_0" .. chairAnimId .. "_idle_outro")
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", genderAnimString .. "dealer_focus_player_0" .. chairAnimId .. "_idle_outro", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
PlayFacialAnim(dealerPed, genderAnimString .. "dealer_focus_player_0" .. chairAnimId .. "_idle_outro_facial", "anim_casino_b@amb@casino@games@blackjack@dealer")
end
end)
RegisterNetEvent("Blackjack:bustBlackjack")
AddEventHandler("Blackjack:bustBlackjack",function(chairID,tableId)
if closeToCasino then
dealerPed = getDealerFromTableId(tableId)
PlayAmbientSpeech1(dealerPed,"MINIGAME_BJACK_DEALER_PLAYER_BUST","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", "reaction_bad", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
-- print("closestChair:",closestChair)
-- print("getLocalChairIdFromGlobalChairId(closestChair):",getLocalChairIdFromGlobalChairId(closestChair))
-- print("chairID+1:",chairID)
-- print("sittingAtBlackjackTable:",sittingAtBlackjackTable)
if chairID == closestChair and sittingAtBlackjackTable then
angryIBust()
drawCurrentHand = false
currentHand = 0
dealersHand = 0
end
end
end)
RegisterNetEvent("Blackjack:flipDealerCard")
AddEventHandler("Blackjack:flipDealerCard",function(gotCurrentHand,tableId,gameId)
if closeToCasino then
dealerPed = getDealerFromTableId(tableId)
flipDealerCard(dealerPed,gotCurrentHand,tableId,gameId)
end
end)
RegisterNetEvent("Blackjack:dealerBusts")
AddEventHandler("Blackjack:dealerBusts",function(tableId)
if closeToCasino then
dealerPed = getDealerFromTableId(tableId)
PlayAmbientSpeech1(dealerPed,"MINIGAME_DEALER_BUSTS","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
end
end)
RegisterNetEvent("Blackjack:blackjackLose")
AddEventHandler("Blackjack:blackjackLose",function(tableId)
if closeToCasino then
blackjackGameInProgress = false
dealerPed = getDealerFromTableId(tableId)
PlayAmbientSpeech1(dealerPed,"MINIGAME_DEALER_WINS","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", "reaction_bad", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
angryILost()
canExitBlackjack = true
PlaySoundFrontend(-1, "CHALLENGE_UNLOCKED", "HUD_AWARDS", 1)
drawCurrentHand = false
currentHand = 0
dealersHand = 0
end
end)
RegisterNetEvent("Blackjack:blackjackPush")
AddEventHandler("Blackjack:blackjackPush",function(tableId)
if closeToCasino then
blackjackGameInProgress = false
dealerPed = getDealerFromTableId(tableId)
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", "reaction_impartial", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
annoyedIPushed()
canExitBlackjack = true
PlaySoundFrontend(-1, "ERROR", "HUD_AMMO_SHOP_SOUNDSET", 1)
drawCurrentHand = false
currentHand = 0
dealersHand = 0
end
end)
RegisterNetEvent("Blackjack:blackjackWin")
AddEventHandler("Blackjack:blackjackWin",function(tableId)
if closeToCasino then
blackjackGameInProgress = false
dealerPed = getDealerFromTableId(tableId)
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", "reaction_good", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
happyIWon()
canExitBlackjack = true
PlaySoundFrontend(-1, "TENNIS_MATCH_POINT", "HUD_AWARDS", 1)
drawCurrentHand = false
currentHand = 0
dealersHand = 0
end
end)
RegisterNetEvent("Blackjack:chipsCleanup")
AddEventHandler("Blackjack:chipsCleanup",function(chairId,tableId)
if closeToCasino then
if string.sub(chairId, -5) ~= "chips" then
dealerPed = getDealerFromTableId(tableId)
local gender = getDealerGenderFromPed(dealerPed)
if gender == "male" then
genderAnimString = ""
end
if gender == "female" then
genderAnimString = "female_"
end
localChairId = getLocalChairIdFromGlobalChairId(chairId)
if chairId > 99 then --if "chairId" is above 99 its not a chair Id, its the gameId so its the dealers turn
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", genderAnimString .. "retrieve_own_cards_and_remove", 3.0, 1.0, -1, 2, 0, 0, 0, 0)
PlayFacialAnim(dealerPed, genderAnimString .. "retrieve_own_cards_and_remove_facial", "anim_casino_b@amb@casino@games@blackjack@dealer")
else
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", genderAnimString .. "retrieve_cards_player_0" .. tostring(localChairId), 3.0, 1.0, -1, 2, 0, 0, 0, 0)
PlayFacialAnim(dealerPed, genderAnimString .. "retrieve_cards_player_0" .. tostring(localChairId).."_facial", "anim_casino_b@amb@casino@games@blackjack@dealer")
end
while not HasAnimEventFired(dealerPed,-1345695206) do
-- print("waiting for -1345695206 to fire")
Wait(0)
end
for k,v in pairs(cardObjects) do
if k == chairId then
for k2,v2 in pairs(v) do
-- print("attach entity chairId",k,"objkey",k2," objvalue",v2)
AttachEntityToEntity(v2, dealerPed, GetPedBoneIndex(dealerPed,28422), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 1, 2, 1)
end
end
end
while not HasAnimEventFired(dealerPed,585557868) do
-- print("waiting for 585557868 to fire")
Wait(0)
end
for k,v in pairs(cardObjects) do
if k == chairId then
for k2,v2 in pairs(v) do
DeleteEntity(v2)
--v[k2] = nil
end
end
end
else
for k,v in pairs(cardObjects) do
if k == chairId then
for k2,v2 in pairs(v) do
DeleteEntity(v2)
--v[k2] = nil
end
end
end
end
end
end)
RegisterNetEvent("Blackjack:chipsCleanupNoAnim")
AddEventHandler("Blackjack:chipsCleanupNoAnim",function(chairId,tableId)
for k,v in pairs(cardObjects) do
if k == chairId then
for k2,v2 in pairs(v) do
DeleteEntity(v2)
end
end
end
end)
function betChipsForNextHand(chipsAmount,chipsProp,something,chairID,someBool,zOffset)
-- Local_198.f_538[func_379(iVar2, iVar9, 0)] = OBJECT::CREATE_OBJECT_NO_OFFSET(func_375(iVar14, bVar4), OBJECT::_GET_OBJECT_OFFSET_FROM_COORDS(func_70(iVar2), vVar8.z, func_374(iVar14, 0, iVar9, bVar4)), 0, false, 1);
-- ENTITY::SET_ENTITY_COORDS_NO_OFFSET(Local_198.f_538[func_379(iVar2, iVar9, 0)],
--^-> OBJECT::_GET_OBJECT_OFFSET_FROM_COORDS(func_70(iVar2), vVar8.z, func_374(iVar14, 0, iVar9, bVar4)), 0, 0, 1);
-- ENTITY::SET_ENTITY_ROTATION(Local_198.f_538[func_379(iVar2, iVar9, 0)], vVar8 + func_373(iVar14, 0, iVar9, bVar4), 2, 1);
-- if (!MISC::IS_STRING_NULL_OR_EMPTY(func_372(iVar14)))
-- {
-- AUDIO::PLAY_SOUND_FROM_ENTITY(-1, func_372(iVar14), Local_198.f_538[func_379(iVar2, iVar9, 0)], "dlc_vw_table_games_sounds", 0, 0);
-- }
-- print("betChipsForNextHand",chairID)
-- print("betChipsForNextHand_local",getLocalChairIndexFromGlobalChairId(chairID))
RequestModel(chipsProp)
while not HasModelLoaded(chipsProp) do
Wait(0)
-- print("[CMG Casino] Stuck requesting model: " .. tostring(chipsProp))
RequestModel(chipsProp)
end
vVar8 = vector3(0.0, 0.0, getTableHeading(blackjack_func_368(chairID)))
local tablePosX,tablePosY,tablePosZ = getTableCoords(blackjack_func_368(chairID))
local chipsVector = blackjack_func_374(chipsAmount,something,getLocalChairIndexFromGlobalChairId(chairID),someBool)
local chipsOffset = GetObjectOffsetFromCoords(tablePosX,tablePosY,tablePosZ, vVar8.z, chipsVector.x, chipsVector.y, chipsVector.z)
local chipsObj = CreateObjectNoOffset(GetHashKey(chipsProp), chipsOffset.x,chipsOffset.y,chipsOffset.z, false, false, 1)
if cardObjects[tostring(chairID) .. "chips"] ~= nil then
table.insert(cardObjects[tostring(chairID) .. "chips"],chipsObj)
else
cardObjects[tostring(chairID) .. "chips"] = {}
table.insert(cardObjects[tostring(chairID) .. "chips"],chipsObj)
end
SetEntityCoordsNoOffset(chipsObj, chipsOffset.x, chipsOffset.y, chipsOffset.z+zOffset, 0, 0, 1)
local chipOffsetRotation = blackjack_func_373(chipsAmount,0,getLocalChairIndexFromGlobalChairId(chairID),someBool)
SetEntityRotation(chipsObj,vVar8 + chipOffsetRotation, 2, 1)
-- print("betChips DEBUG")
-- print("==============")
-- print("zOffset: " .. tostring(zOffset))
-- print("vVar8: " .. tostring(vVar8))
-- print("tablePosX: " .. tostring(tablePosX))
-- print("tablePosY: " .. tostring(tablePosY))
-- print("tablePosZ: " .. tostring(tablePosZ))
-- print("chipsVector: " .. tostring(chipsVector))
-- print("chipsOffset: " .. tostring(chipsOffset))
-- print("chipsObj: " .. tostring(chipsObj))
-- print("chipOffsetRotation: " .. tostring(chipOffsetRotation))
end
function getDealerGenderFromPed(dealerPed)
maleCasinoDealer = GetHashKey("S_M_Y_Casino_01")
femaleCasinoDealer = GetHashKey("S_F_Y_Casino_01")
if GetEntityModel(dealerPed) == maleCasinoDealer then
return "male"
end
return "female"
end
function getNewCardFromMachine(nextCard,chairId,gameId)
-- print("getNewCardFromMachine:",chairId)
RequestModel(nextCard)
while not HasModelLoaded(nextCard) do
Wait(0)
RequestModel(nextCard)
end
nextCardHash = GetHashKey(nextCard)
local cardObjectOffset = blackjack_func_399(blackjack_func_368(chairId))
local nextCardObj = CreateObjectNoOffset(nextCardHash, cardObjectOffset.x, cardObjectOffset.y, cardObjectOffset.z, false, false, 1)
if cardObjects[chairId] ~= nil then
if gameId then
-- print("inserting chipsobjects with key: " .. tostring(gameId))
table.insert(cardObjects[gameId],nextCardObj)
else
-- print("inserting chipsobjects with key: " .. tostring(chairId))
table.insert(cardObjects[chairId],nextCardObj)
end
else
cardObjects[chairId] = {}
if gameId then
-- print("inserting chipsobjects with key: " .. tostring(gameId))
table.insert(cardObjects[gameId],nextCardObj)
else
-- print("inserting chipsobjects with key: " .. tostring(chairId))
table.insert(cardObjects[chairId],nextCardObj)
end
end
SetEntityVisible(nextCardObj,false)
SetModelAsNoLongerNeeded(nextCardHash)
local cardObjectOffsetRotation = blackjack_func_398(blackjack_func_368(chairId))
SetEntityCoordsNoOffset(nextCardObj, cardObjectOffset.x, cardObjectOffset.y, cardObjectOffset.z, 0, 0, 1)
--vVar8 = vector3(0.0, 0.0, getTableHeading(blackjack_func_368(chairId)))
--if chairId > 99 then
-- cardObjectOffsetRotation = vVar8 + func_376(iVar5, iVar9, 0, false)
--else
-- cardObjectOffsetRotation = blackjack_func_398(blackjack_func_368(chairId))
--end
-- print("cardObjectOffsetRotation.x: " .. tostring(cardObjectOffsetRotation.x))
-- print("cardObjectOffsetRotation.y: " .. tostring(cardObjectOffsetRotation.y))
-- print("cardObjectOffsetRotation.z: " .. tostring(cardObjectOffsetRotation.z))
SetEntityRotation(nextCardObj, cardObjectOffsetRotation.x, cardObjectOffsetRotation.y, cardObjectOffsetRotation.z, 2, 1)
--FreezeEntityPosition(nextCardObj, true)
return nextCardObj
end
function dealerGiveCards(chairId,gender,dealerPed,cardObj) --func_36
local seatNumber = tostring(getLocalChairIdFromGlobalChairId(chairId))
--local currentScene = NetworkCreateSynchronisedScene(x, y, z, 0.0, 0.0, zRot, 2, 1, 0, 1065353216, 0, 1065353216)
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", gender .. "deal_card_player_0" .. seatNumber, 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
PlayFacialAnim(dealerPed,"deal_card_player_0"..seatNumber.."_facial")
--NetworkStartSynchronisedScene(currentScene)
--func_15(func_21(iParam0, Local_188.f_899[iVar2 /*9*/].f_8, 0, 0), Local_188.f_1[iParam0 /*211*/][Local_188.f_1[iParam0 /*211*/].f_209], 0, 0);
Wait(300)
SetEntityVisible(cardObj,true)
while not HasAnimEventFired(dealerPed, 585557868) do
Wait(0)
-- print("waiting for anim event to fire.. for dealergivecards")
end
end
function dealerGiveSelfCard(gender,dealerPed,cardIndex,cardObj) --func_36
if cardIndex == 1 then
cardAnim = "deal_card_self_second_card"
elseif cardIndex == 2 then
cardAnim = "deal_card_self"
else
cardAnim = "deal_card_self_card_10"
end
TaskPlayAnim(dealerPed, "anim_casino_b@amb@casino@games@blackjack@dealer", gender .. cardAnim, 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
PlayFacialAnim(dealerPed, gender .. cardAnim.."_facial", "anim_casino_b@amb@casino@games@blackjack@dealer")
Wait(300)
SetEntityVisible(cardObj,true)
while not HasAnimEventFired(dealerPed, 585557868) do
Wait(0)
-- print("waiting for anim event to fire.. for dealerGiveSelfCard")
end
Wait(100)
end
local chipsProps = {
"vw_prop_chip_10dollar_x1",
"vw_prop_chip_50dollar_x1",
"vw_prop_chip_100dollar_x1",
"vw_prop_chip_50dollar_st",
"vw_prop_chip_100dollar_st",
"vw_prop_chip_500dollar_x1",
"vw_prop_chip_1kdollar_x1",
"vw_prop_chip_500dollar_st",
"vw_prop_chip_5kdollar_x1",
"vw_prop_chip_1kdollar_st",
"vw_prop_chip_10kdollar_x1",
"vw_prop_chip_5kdollar_st",
"vw_prop_chip_10kdollar_st",
"vw_prop_plaq_5kdollar_x1",
"vw_prop_plaq_5kdollar_st",
"vw_prop_plaq_10kdollar_x1",
"vw_prop_plaq_10kdollar_st",
"vw_prop_vw_chips_pile_01a",
"vw_prop_vw_chips_pile_02a",
"vw_prop_vw_chips_pile_03a",
"vw_prop_vw_coin_01a",
}
function declineCard()
shouldForceIdleCardGames = false
local chairPos = blackjack_func_348(closestChair)
local chairRot = blackjack_func_215(closestChair)
local currentScene = NetworkCreateSynchronisedScene(chairPos.x, chairPos.y, chairPos.z, chairRot.x, chairRot.y, chairRot.z, 2, 1, 0, 1065353216, 0, 1065353216)
NetworkAddPedToSynchronisedScene(PlayerPedId(), currentScene, "anim_casino_b@amb@casino@games@blackjack@player", "decline_card_001", 4.0, -2.0, 13, 16, 1148846080, 0)
NetworkStartSynchronisedScene(currentScene)
SetTimeout(2000,function()
shouldForceIdleCardGames = true
end)
end
function requestCard()
shouldForceIdleCardGames = false
local chairPos = blackjack_func_348(closestChair)
local chairRot = blackjack_func_215(closestChair)
local currentScene = NetworkCreateSynchronisedScene(chairPos.x, chairPos.y, chairPos.z, chairRot.x, chairRot.y, chairRot.z, 2, 1, 0, 1065353216, 0, 1065353216)
NetworkAddPedToSynchronisedScene(PlayerPedId(), currentScene, "anim_casino_b@amb@casino@games@blackjack@player", "request_card", 4.0, -2.0, 13, 16, 1148846080, 0)
NetworkStartSynchronisedScene(currentScene)
SetTimeout(2000,function()
shouldForceIdleCardGames = true
end)
end
function putBetOnTable()
shouldForceIdleCardGames = false
local chairPos = blackjack_func_348(closestChair)
local chairRot = blackjack_func_215(closestChair)
local currentScene = NetworkCreateSynchronisedScene(chairPos.x, chairPos.y, chairPos.z, chairRot.x, chairRot.y, chairRot.z, 2, 1, 0, 1065353216, 0, 1065353216)
NetworkAddPedToSynchronisedScene(PlayerPedId(), currentScene, "anim_casino_b@amb@casino@games@blackjack@player", getAnimNameFromBet(100), 4.0, -2.0, 13, 16, 1148846080, 0)
NetworkStartSynchronisedScene(currentScene)
SetTimeout(5000,function()
shouldForceIdleCardGames = true
end)
end
function angryIBust()
shouldForceIdleCardGames = false
local chairPos = blackjack_func_348(closestChair)
local chairRot = blackjack_func_215(closestChair)
local currentScene = NetworkCreateSynchronisedScene(chairPos.x, chairPos.y, chairPos.z, chairRot.x, chairRot.y, chairRot.z, 2, 1, 0, 1065353216, 0, 1065353216)
NetworkAddPedToSynchronisedScene(PlayerPedId(), currentScene, "anim_casino_b@amb@casino@games@shared@player@", "reaction_terrible_var_01", 4.0, -2.0, 13, 16, 1148846080, 0)
NetworkStartSynchronisedScene(currentScene)
SetTimeout(5000,function()
shouldForceIdleCardGames = true
end)
end
function angryILost()
shouldForceIdleCardGames = false
local chairPos = blackjack_func_348(closestChair)
local chairRot = blackjack_func_215(closestChair)
local currentScene = NetworkCreateSynchronisedScene(chairPos.x, chairPos.y, chairPos.z, chairRot.x, chairRot.y, chairRot.z, 2, 1, 0, 1065353216, 0, 1065353216)
NetworkAddPedToSynchronisedScene(PlayerPedId(), currentScene, "anim_casino_b@amb@casino@games@shared@player@", "reaction_bad_var_01", 4.0, -2.0, 13, 16, 1148846080, 0)
NetworkStartSynchronisedScene(currentScene)
SetTimeout(5000,function()
shouldForceIdleCardGames = true
end)
end
function annoyedIPushed()
shouldForceIdleCardGames = false
local chairPos = blackjack_func_348(closestChair)
local chairRot = blackjack_func_215(closestChair)
local currentScene = NetworkCreateSynchronisedScene(chairPos.x, chairPos.y, chairPos.z, chairRot.x, chairRot.y, chairRot.z, 2, 1, 0, 1065353216, 0, 1065353216)
NetworkAddPedToSynchronisedScene(PlayerPedId(), currentScene, "anim_casino_b@amb@casino@games@shared@player@", "reaction_impartial_var_01", 4.0, -2.0, 13, 16, 1148846080, 0)
NetworkStartSynchronisedScene(currentScene)
SetTimeout(5000,function()
shouldForceIdleCardGames = true
end)
end
function happyIWon()
shouldForceIdleCardGames = false
local chairPos = blackjack_func_348(closestChair)
local chairRot = blackjack_func_215(closestChair)
local currentScene = NetworkCreateSynchronisedScene(chairPos.x, chairPos.y, chairPos.z, chairRot.x, chairRot.y, chairRot.z, 2, 1, 0, 1065353216, 0, 1065353216)
NetworkAddPedToSynchronisedScene(PlayerPedId(), currentScene, "anim_casino_b@amb@casino@games@shared@player@", "reaction_good_var_01", 4.0, -2.0, 13, 16, 1148846080, 0)
NetworkStartSynchronisedScene(currentScene)
SetTimeout(5000,function()
shouldForceIdleCardGames = true
end)
end
function blackjack_func_398(iParam0)
local vVar0 = vector3(0.0, 164.52, 11.5)
return vector3(getTableHeading(iParam0), 0.0, 0.0) + vVar0;
end
function blackjack_func_399(iParam0) --iParam0 is table ID?
local vVar0 = vector3(0.526, 0.571, 0.963)
-- print("func_399 iParam0",iParam0)
local x,y,z = getTableCoords(iParam0)
return GetObjectOffsetFromCoords(x, y, z, getTableHeading(iParam0), vVar0.x, vVar0.y, vVar0.z)
end
function ensureCardModelsLoaded()
cardNum = 0;
while cardNum < 52 do
iVar1 = cardNum + 1
local Local_198f_236 = 1 --assuming 1 cant find it equal anything else :/
iVar2 = getCardFromNumber(iVar1, Local_198f_236)
if not HasModelLoaded(iVar2) then
RequestModel(iVar2)
while not HasModelLoaded(iVar2) do
Wait(0)
end
end
cardNum = cardNum + 1
end
end
function blackjack_func_204(iParam0, iParam1, bParam2) --returns vector
if bParam2 then
return vector3(getTableHeading(iParam1), 0.0, 0.0) + vector3(0, 0.061, -59.1316);
else
vVar0 = blackjack_func_215(iParam0)
return vector3(vVar0.z, 0.0, 0.0) + vector3(-87.48, 0, -60.84);
end
return 0.0, 0.0, 0.0
end
function blackjack_func_205(iParam0, iParam1, bParam2) --returns Vector
if bParam2 then
--return OBJECT::_GET_OBJECT_OFFSET_FROM_COORDS(func_70(iParam1), func_69(iParam1), -0.0094f, -0.0611f, 1.5098f);
return GetObjectOffsetFromCoords(getTableCoords(iParam1), getTableHeading(iParam1),-0.0094, -0.0611, 1.5098)
else
--vVar0 = { func_215(iParam0) };
--return OBJECT::_GET_OBJECT_OFFSET_FROM_COORDS(func_348(iParam0), vVar0.z, 0.245f, 0f, 1.415f);
vVar0 = blackjack_func_215(iParam0)
return GetObjectOffsetFromCoords(blackjack_func_348(iParam0), vVar0.z,0.245, 0.0, 1.415)
end
return 0.0, 0.0, 0.0
end
function blackjack_func_216(iParam0, iParam1)
local goToVector = blackjack_func_348(iParam0)
local xRot,yRot,zRot = blackjack_func_215(iParam0)
vVar0 = GetAnimInitialOffsetRotation("anim_casino_b@amb@casino@games@shared@player@", blackjack_func_213(iParam1), goToVector.x, goToVector.y, goToVector.z, xRot, yRot, zRot, 0.01, 2)
return vVar0.z
end
function blackjack_func_217(iParam0, vParam1, bParam2)
local vVar0 = {}
if not IsEntityDead(iParam0,0) then
vVar0 = GetEntityCoords(iParam0,1)
else
vVar0 = GetEntityCoords(iParam0,0)
end
return #(vVar0-vParam1)
end
function blackjack_func_218(iParam0, iParam1) --//param0 is 0-3 && param1 is 0-15?
local goToVector = blackjack_func_348(iParam0)
local xRot,yRot,zRot = blackjack_func_215(iParam0)
vVar0 = GetAnimInitialOffsetPosition("anim_casino_b@amb@casino@games@shared@player@", blackjack_func_213(iParam1), goToVector.x, goToVector.y, goToVector.z, xRot, yRot, zRot, 0.01, 2)
return vVar0
end
function blackjack_func_213(sitAnimID)
if sitAnimID == 0 then
return "sit_enter_left"
elseif sitAnimID == 1 then
return "sit_enter_left_side"
elseif sitAnimID == 2 then
return "sit_enter_right_side"
end
return "sit_enter_left"
end
function getInverseChairId(chairId)
if chairId == 0 then return 3 end
if chairId == 1 then return 2 end
if chairId == 2 then return 1 end
if chairId == 3 then return 0 end
end
function blackjack_func_348(iParam0) --GetVectorFromChairId
if iParam0 == -1 then
return vector3(0.0,0.0,0.0)
end
local blackjackTableObj
local tableId = blackjack_func_368(iParam0)
local x,y,z = getTableCoords(tableId)
blackjackTableObj = GetClosestObjectOfType(x, y, z, 1.0, cfg.blackjackTables[tableId].prop, 0, 0, 0)
if DoesEntityExist(blackjackTableObj) and DoesEntityHaveDrawable(blackjackTableObj) then
local localChairId = getLocalChairIndexFromGlobalChairId(iParam0)
-- -- print("localchairId was",localChairId)
localChairId = getInverseChairId(localChairId) + 1
-- -- print("localchairId is now",localChairId)
return GetWorldPositionOfEntityBone_2(blackjackTableObj,GetEntityBoneIndexByName(blackjackTableObj, "Chair_Base_0"..localChairId))
end
return vector3(0.0,0.0,0.0)
end
function blackjack_func_215(iParam0)
if iParam0 == -1 then
return vector3(0.0,0.0,0.0)
end
local blackjackTableObj
local tableId = blackjack_func_368(iParam0)
local x,y,z = getTableCoords(tableId)
blackjackTableObj = GetClosestObjectOfType(x, y, z, 1.0, cfg.blackjackTables[tableId].prop, 0, 0, 0)
if DoesEntityExist(blackjackTableObj) and DoesEntityHaveDrawable(blackjackTableObj) then
local localChairId = getLocalChairIndexFromGlobalChairId(iParam0)
-- -- print("localchairId was",localChairId)
localChairId = getInverseChairId(localChairId) + 1
-- -- print("localchairId is now",localChairId)
return GetWorldRotationOfEntityBone(blackjackTableObj,GetEntityBoneIndexByName(blackjackTableObj, "Chair_Base_0"..localChairId))
else
return vector3(0.0,0.0,0.0)
end
end
function blackjack_func_368(chairId) --returns tableID based on chairID
local tableId = -1
for i=0,chairId,4 do
tableId = tableId + 1
end
return tableId
end
function getLocalChairIdFromGlobalChairId(globalChairId) --returns tableID based on chairID
if globalChairId ~= -1 then
return (globalChairId % 4) + 1
else
return 100
end
end
function getLocalChairIndexFromGlobalChairId(globalChairId) --returns tableID based on chairID
if globalChairId ~= -1 then
return (globalChairId % 4)
else
return 100
end
end
function getTableHeading(id) --previously blackjack_func_69
if cfg.blackjackTables[id] ~= nil then
return cfg.blackjackTables[id].tableHeading
else
return 0.0 --for when tableId = gameId (i.e for dealer)
end
end
function getTableCoords(id) --previously blackjack_func_70
if cfg.blackjackTables[id] ~= nil then
return cfg.blackjackTables[id].tablePos.x,cfg.blackjackTables[id].tablePos.y,cfg.blackjackTables[id].tablePos.z
else
return 0.0,0.0,0.0 --for when tableId = gameId (i.e for dealer)
end
end
function getCardFromNumber(iParam0, bParam1)
if bParam1 then
if iParam0 == 1 then
return "vw_prop_vw_club_char_a_a"
elseif iParam0 == 2 then
return "vw_prop_vw_club_char_02a"
elseif iParam0 == 3 then
return "vw_prop_vw_club_char_03a"
elseif iParam0 == 4 then
return "vw_prop_vw_club_char_04a"
elseif iParam0 == 5 then
return "vw_prop_vw_club_char_05a"
elseif iParam0 == 6 then
return "vw_prop_vw_club_char_06a"
elseif iParam0 == 7 then
return "vw_prop_vw_club_char_07a"
elseif iParam0 == 8 then
return "vw_prop_vw_club_char_08a"
elseif iParam0 == 9 then
return "vw_prop_vw_club_char_09a"
elseif iParam0 == 10 then
return "vw_prop_vw_club_char_10a"
elseif iParam0 == 11 then
return "vw_prop_vw_club_char_j_a"
elseif iParam0 == 12 then
return "vw_prop_vw_club_char_q_a"
elseif iParam0 == 13 then
return "vw_prop_vw_club_char_k_a"
elseif iParam0 == 14 then
return "vw_prop_vw_dia_char_a_a"
elseif iParam0 == 15 then
return "vw_prop_vw_dia_char_02a"
elseif iParam0 == 16 then
return "vw_prop_vw_dia_char_03a"
elseif iParam0 == 17 then
return "vw_prop_vw_dia_char_04a"
elseif iParam0 == 18 then
return "vw_prop_vw_dia_char_05a"
elseif iParam0 == 19 then
return "vw_prop_vw_dia_char_06a"
elseif iParam0 == 20 then
return "vw_prop_vw_dia_char_07a"
elseif iParam0 == 21 then
return "vw_prop_vw_dia_char_08a"
elseif iParam0 == 22 then
return "vw_prop_vw_dia_char_09a"
elseif iParam0 == 23 then
return "vw_prop_vw_dia_char_10a"
elseif iParam0 == 24 then
return "vw_prop_vw_dia_char_j_a"
elseif iParam0 == 25 then
return "vw_prop_vw_dia_char_q_a"
elseif iParam0 == 26 then
return "vw_prop_vw_dia_char_k_a"
elseif iParam0 == 27 then
return "vw_prop_vw_hrt_char_a_a"
elseif iParam0 == 28 then
return "vw_prop_vw_hrt_char_02a"
elseif iParam0 == 29 then
return "vw_prop_vw_hrt_char_03a"
elseif iParam0 == 30 then
return "vw_prop_vw_hrt_char_04a"
elseif iParam0 == 31 then
return "vw_prop_vw_hrt_char_05a"
elseif iParam0 == 32 then
return "vw_prop_vw_hrt_char_06a"
elseif iParam0 == 33 then
return "vw_prop_vw_hrt_char_07a"
elseif iParam0 == 34 then
return "vw_prop_vw_hrt_char_08a"
elseif iParam0 == 35 then
return "vw_prop_vw_hrt_char_09a"
elseif iParam0 == 36 then
return "vw_prop_vw_hrt_char_10a"
elseif iParam0 == 37 then
return "vw_prop_vw_hrt_char_j_a"
elseif iParam0 == 38 then
return "vw_prop_vw_hrt_char_q_a"
elseif iParam0 == 39 then
return "vw_prop_vw_hrt_char_k_a"
elseif iParam0 == 40 then
return "vw_prop_vw_spd_char_a_a"
elseif iParam0 == 41 then
return "vw_prop_vw_spd_char_02a"
elseif iParam0 == 42 then
return "vw_prop_vw_spd_char_03a"
elseif iParam0 == 43 then
return "vw_prop_vw_spd_char_04a"
elseif iParam0 == 44 then
return "vw_prop_vw_spd_char_05a"
elseif iParam0 == 45 then
return "vw_prop_vw_spd_char_06a"
elseif iParam0 == 46 then
return "vw_prop_vw_spd_char_07a"
elseif iParam0 == 47 then
return "vw_prop_vw_spd_char_08a"
elseif iParam0 == 48 then
return "vw_prop_vw_spd_char_09a"
elseif iParam0 == 49 then
return "vw_prop_vw_spd_char_10a"
elseif iParam0 == 50 then
return "vw_prop_vw_spd_char_j_a"
elseif iParam0 == 51 then
return "vw_prop_vw_spd_char_q_a"
elseif iParam0 == 52 then
return "vw_prop_vw_spd_char_k_a"
end
else
if iParam0 == 1 then
return "vw_prop_cas_card_club_ace"
elseif iParam0 == 2 then
return "vw_prop_cas_card_club_02"
elseif iParam0 == 3 then
return "vw_prop_cas_card_club_03"
elseif iParam0 == 4 then
return "vw_prop_cas_card_club_04"
elseif iParam0 == 5 then
return "vw_prop_cas_card_club_05"
elseif iParam0 == 6 then
return "vw_prop_cas_card_club_06"
elseif iParam0 == 7 then
return "vw_prop_cas_card_club_07"
elseif iParam0 == 8 then
return "vw_prop_cas_card_club_08"
elseif iParam0 == 9 then
return "vw_prop_cas_card_club_09"
elseif iParam0 == 10 then
return "vw_prop_cas_card_club_10"
elseif iParam0 == 11 then
return "vw_prop_cas_card_club_jack"
elseif iParam0 == 12 then
return "vw_prop_cas_card_club_queen"
elseif iParam0 == 13 then
return "vw_prop_cas_card_club_king"
elseif iParam0 == 14 then
return "vw_prop_cas_card_dia_ace"
elseif iParam0 == 15 then
return "vw_prop_cas_card_dia_02"
elseif iParam0 == 16 then
return "vw_prop_cas_card_dia_03"
elseif iParam0 == 17 then
return "vw_prop_cas_card_dia_04"
elseif iParam0 == 18 then
return "vw_prop_cas_card_dia_05"
elseif iParam0 == 19 then
return "vw_prop_cas_card_dia_06"
elseif iParam0 == 20 then
return "vw_prop_cas_card_dia_07"
elseif iParam0 == 21 then
return "vw_prop_cas_card_dia_08"
elseif iParam0 == 22 then
return "vw_prop_cas_card_dia_09"
elseif iParam0 == 23 then
return "vw_prop_cas_card_dia_10"
elseif iParam0 == 24 then
return "vw_prop_cas_card_dia_jack"
elseif iParam0 == 25 then
return "vw_prop_cas_card_dia_queen"
elseif iParam0 == 26 then
return "vw_prop_cas_card_dia_king"
elseif iParam0 == 27 then
return "vw_prop_cas_card_hrt_ace"
elseif iParam0 == 28 then
return "vw_prop_cas_card_hrt_02"
elseif iParam0 == 29 then
return "vw_prop_cas_card_hrt_03"
elseif iParam0 == 30 then
return "vw_prop_cas_card_hrt_04"
elseif iParam0 == 31 then
return "vw_prop_cas_card_hrt_05"
elseif iParam0 == 32 then
return "vw_prop_cas_card_hrt_06"
elseif iParam0 == 33 then
return "vw_prop_cas_card_hrt_07"
elseif iParam0 == 34 then
return "vw_prop_cas_card_hrt_08"
elseif iParam0 == 35 then
return "vw_prop_cas_card_hrt_09"
elseif iParam0 == 36 then
return "vw_prop_cas_card_hrt_10"
elseif iParam0 == 37 then
return "vw_prop_cas_card_hrt_jack"
elseif iParam0 == 38 then
return "vw_prop_cas_card_hrt_queen"
elseif iParam0 == 39 then
return "vw_prop_cas_card_hrt_king"
elseif iParam0 == 40 then
return "vw_prop_cas_card_spd_ace"
elseif iParam0 == 41 then
return "vw_prop_cas_card_spd_02"
elseif iParam0 == 42 then
return "vw_prop_cas_card_spd_03"
elseif iParam0 == 43 then
return "vw_prop_cas_card_spd_04"
elseif iParam0 == 44 then
return "vw_prop_cas_card_spd_05"
elseif iParam0 == 45 then
return "vw_prop_cas_card_spd_06"
elseif iParam0 == 46 then
return "vw_prop_cas_card_spd_07"
elseif iParam0 == 47 then
return "vw_prop_cas_card_spd_08"
elseif iParam0 == 48 then
return "vw_prop_cas_card_spd_09"
elseif iParam0 == 49 then
return "vw_prop_cas_card_spd_10"
elseif iParam0 == 50 then
return "vw_prop_cas_card_spd_jack"
elseif iParam0 == 51 then
return "vw_prop_cas_card_spd_queen"
elseif iParam0 == 52 then
return "vw_prop_cas_card_spd_king"
end
end
if bParam1 then
return "vw_prop_vw_jo_char_01a"
end
return "vw_prop_casino_cards_single"
end
function getAnimNameFromBet(betAmount)
--TODO sort this out once bet amounts decided
-- return "place_bet_small";
-- return "place_bet_small_alt1";
-- return "place_bet_small_alt2";
-- return "place_bet_small_alt3";
-- return "place_bet_large";
-- return "place_bet_double_down";
-- return "place_bet_small_player_02";
-- return "place_bet_large_player_02";
-- return "place_bet_double_down_player_02";
-- return "place_bet_small_split";
-- return "place_bet_large_split";
--default for now
return "place_bet_small"
end
function blackjack_func_377(iParam0, iParam1, bParam2) --iVar5, iVar9, 0
-- print("blackjack_func_377")
-- print("iParam0: " .. tostring(iParam0))
-- print("iParam1: " .. tostring(iParam1))
-- print("bParam2: " .. tostring(bParam2))
if bParam2 == 0 then
-- print("first check [OK]")
-- print("iParam1: " .. tostring(iParam1))
-- print("iParam0: " .. tostring(iParam0))
if iParam1 == 0 then
if iParam0 == 0 then
return 0.5737, 0.2376, 0.948025
elseif iParam0 == 1 then
return 0.562975, 0.2523, 0.94875
elseif iParam0 == 2 then
return 0.553875, 0.266325, 0.94955
elseif iParam0 == 3 then
return 0.5459, 0.282075, 0.9501
elseif iParam0 == 4 then
return 0.536125, 0.29645, 0.95085
elseif iParam0 == 5 then
return 0.524975, 0.30975, 0.9516
elseif iParam0 == 6 then
return 0.515775, 0.325325, 0.95235
end
elseif iParam1 == 1 then
if iParam0 == 0 then
return 0.2325, -0.1082, 0.94805
elseif iParam0 == 1 then
return 0.23645, -0.0918, 0.949
elseif iParam0 == 2 then
return 0.2401, -0.074475, 0.950225
elseif iParam0 == 3 then
return 0.244625, -0.057675, 0.951125
elseif iParam0 == 4 then
return 0.249675, -0.041475, 0.95205
elseif iParam0 == 5 then
return 0.257575, -0.0256, 0.9532
elseif iParam0 == 6 then
return 0.2601, -0.008175, 0.954375
end
elseif iParam1 == 2 then
if iParam0 == 0 then
return -0.2359, -0.1091, 0.9483
elseif iParam0 == 1 then
return -0.221025, -0.100675, 0.949
elseif iParam0 == 2 then
return -0.20625, -0.092875, 0.949725
elseif iParam0 == 3 then
return -0.193225, -0.07985, 0.950325
elseif iParam0 == 4 then
return -0.1776, -0.072, 0.951025
elseif iParam0 == 5 then
return -0.165, -0.060025, 0.951825
elseif iParam0 == 6 then
return -0.14895, -0.05155, 0.95255
end
elseif iParam1 == 3 then
if iParam0 == 0 then
return -0.5765, 0.2229, 0.9482
elseif iParam0 == 1 then
return -0.558925, 0.2197, 0.949175
elseif iParam0 == 2 then
return -0.5425, 0.213025, 0.9499
elseif iParam0 == 3 then
return -0.525925, 0.21105, 0.95095
elseif iParam0 == 4 then
return -0.509475, 0.20535, 0.9519
elseif iParam0 == 5 then
return -0.491775, 0.204075, 0.952825
elseif iParam0 == 6 then
return -0.4752, 0.197525, 0.9543
end
end
else
if iParam1 == 0 then
if iParam0 == 0 then
return 0.6083, 0.3523, 0.94795
elseif iParam0 == 1 then
return 0.598475, 0.366475, 0.948925
elseif iParam0 == 2 then
return 0.589525, 0.3807, 0.94975
elseif iParam0 == 3 then
return 0.58045, 0.39435, 0.950375
elseif iParam0 == 4 then
return 0.571975, 0.4092, 0.951075
elseif iParam0 == 5 then
return 0.5614, 0.4237, 0.951775
elseif iParam0 == 6 then
return 0.554325, 0.4402, 0.952525
end
elseif iParam1 == 1 then
if iParam0 == 0 then
return 0.3431, -0.0527, 0.94855
elseif iParam0 == 1 then
return 0.348575, -0.0348, 0.949425
elseif iParam0 == 2 then
return 0.35465, -0.018825, 0.9502
elseif iParam0 == 3 then
return 0.3581, -0.001625, 0.95115
elseif iParam0 == 4 then
return 0.36515, 0.015275, 0.952075
elseif iParam0 == 5 then
return 0.368525, 0.032475, 0.95335
elseif iParam0 == 6 then
return 0.373275, 0.0506, 0.9543
end
elseif iParam1 == 2 then
if iParam0 == 0 then
return -0.116, -0.1501, 0.947875
elseif iParam0 == 1 then
return -0.102725, -0.13795, 0.948525
elseif iParam0 == 2 then
return -0.08975, -0.12665, 0.949175
elseif iParam0 == 3 then
return -0.075025, -0.1159, 0.949875
elseif iParam0 == 4 then
return -0.0614, -0.104775, 0.9507
elseif iParam0 == 5 then
return -0.046275, -0.095025, 0.9516
elseif iParam0 == 6 then
return -0.031425, -0.0846, 0.952675
end
elseif iParam1 == 3 then
if iParam0 == 0 then
return -0.5205, 0.1122, 0.9478
elseif iParam0 == 1 then
return -0.503175, 0.108525, 0.94865
elseif iParam0 == 2 then
return -0.485125, 0.10475, 0.949175
elseif iParam0 == 3 then
return -0.468275, 0.099175, 0.94995
elseif iParam0 == 4 then
return -0.45155, 0.09435, 0.95085
elseif iParam0 == 5 then
return -0.434475, 0.089725, 0.95145
elseif iParam0 == 6 then
return -0.415875, 0.0846, 0.9523
end
elseif iParam1 == 4 then --estimated
if iParam0 == 0 then
return -0.293,0.253,0.950025
elseif iParam0 == 1 then
return -0.093,0.253,0.950025
elseif iParam0 == 2 then
return 0.0293,0.253,0.950025
elseif iParam0 == 3 then
return 0.1516,0.253,0.950025
elseif iParam0 == 4 then
return 0.2739,0.253,0.950025
elseif iParam0 == 5 then
return 0.3962,0.253,0.950025
elseif iParam0 == 6 then
return 0.5185,0.253,0.950025
end
end
end
return 0.0, 0.0, 0.947875
end
function func_376(iParam0, iParam1, bParam2, bParam3)
if not bParam2 then
if iParam1 == 0 then
if iParam0 == 0 then
return vector3(0.0, 0.0, 69.12)
elseif iParam0 == 1 then
return vector3(0.0, 0.0, 67.8)
elseif iParam0 == 2 then
return vector3(0.0, 0.0, 66.6)
elseif iParam0 == 3 then
return vector3(0.0, 0.0, 70.44)
elseif iParam0 == 4 then
return vector3(0.0, 0.0, 70.84)
elseif iParam0 == 5 then
return vector3(0.0, 0.0, 67.88)
elseif iParam0 == 6 then
return vector3(0.0, 0.0, 69.56)
end
elseif iParam0 == 1 then
if iParam0 == 0 then
return vector3(0.0, 0.0, 22.11)
elseif iParam0 == 1 then
return vector3(0.0, 0.0, 22.32)
elseif iParam0 == 2 then
return vector3(0.0, 0.0, 20.8)
elseif iParam0 == 3 then
return vector3(0.0, 0.0, 19.8)
elseif iParam0 == 4 then
return vector3(0.0, 0.0, 19.44)
elseif iParam0 == 5 then
return vector3(0.0, 0.0, 26.28)
elseif iParam0 == 6 then
return vector3(0.0, 0.0, 22.68)
end
elseif iParam0 == 2 then
if iParam0 == 0 then
return vector3(0.0, 0.0, -21.43)
elseif iParam0 == 1 then
return vector3(0.0, 0.0, -20.16)
elseif iParam0 == 2 then
return vector3(0.0, 0.0, -16.92)
elseif iParam0 == 3 then
return vector3(0.0, 0.0, -23.4)
elseif iParam0 == 4 then
return vector3(0.0, 0.0, -21.24)
elseif iParam0 == 5 then
return vector3(0.0, 0.0, -23.76)
elseif iParam0 == 6 then
return vector3(0.0, 0.0, -19.44)
end
elseif iParam0 == 3 then
if iParam0 == 0 then
return vector3(0.0, 0.0, -67.03)
elseif iParam0 == 1 then
return vector3(0.0, 0.0, -69.12)
elseif iParam0 == 2 then
return vector3(0.0, 0.0, -64.44)
elseif iParam0 == 3 then
return vector3(0.0, 0.0, -67.68)
elseif iParam0 == 4 then
return vector3(0.0, 0.0, -63.72)
elseif iParam0 == 5 then
return vector3(0.0, 0.0, -68.4)
elseif iParam0 == 6 then
return vector3(0.0, 0.0, -64.44)
end
end
else
if iParam1 == 0 then
if iParam0 == 0 then
return vector3(0.0, 0.0, 68.57)
elseif iParam0 == 1 then
return vector3(0.0, 0.0, 67.52)
elseif iParam0 == 2 then
return vector3(0.0, 0.0, 67.76)
elseif iParam0 == 3 then
return vector3(0.0, 0.0, 67.04)
elseif iParam0 == 4 then
return vector3(0.0, 0.0, 68.84)
elseif iParam0 == 5 then
return vector3(0.0, 0.0, 65.96)
elseif iParam0 == 6 then
return vector3(0.0, 0.0, 67.76)
end
elseif iParam1 == 1 then
if iParam0 == 0 then
return vector3(0.0, 0.0, 22.11)
elseif iParam0 == 1 then
return vector3(0.0, 0.0, 22)
elseif iParam0 == 2 then
return vector3(0.0, 0.0, 24.44)
elseif iParam0 == 3 then
return vector3(0.0, 0.0, 21.08)
elseif iParam0 == 4 then
return vector3(0.0, 0.0, 25.96)
elseif iParam0 == 5 then
return vector3(0.0, 0.0, 26.16)
elseif iParam0 == 6 then
return vector3(0.0, 0.0, 28.76)
end
elseif iParam1 == 2 then
if iParam0 == 0 then
return vector3(0.0, 0.0, -14.04)
elseif iParam0 == 1 then
return vector3(0.0, 0.0, -15.48)
elseif iParam0 == 2 then
return vector3(0.0, 0.0, -16.56)
elseif iParam0 == 3 then
return vector3(0.0, 0.0, -15.84)
elseif iParam0 == 4 then
return vector3(0.0, 0.0, -16.92)
elseif iParam0 == 5 then
return vector3(0.0, 0.0, -14.4)
elseif iParam0 == 6 then
return vector3(0.0, 0.0, -14.28)
end
elseif iParam1 == 3 then
if iParam0 == 0 then
return vector3(0.0, 0.0, -67.03)
elseif iParam0 == 1 then
return vector3(0.0, 0.0, -67.6)
elseif iParam0 == 2 then
return vector3(0.0, 0.0, -69.4)
elseif iParam0 == 3 then
return vector3(0.0, 0.0, -69.04)
elseif iParam0 == 4 then
return vector3(0.0, 0.0, -68.68)
elseif iParam0 == 5 then
return vector3(0.0, 0.0, -66.16)
elseif iParam0 == 6 then
return vector3(0.0, 0.0, -63.28)
end
end
end
if bParam3 then
vVar0.z = (vVar0.z + 90.0)
end
return vVar0
end
function getChipPropFromAmount(amount)
--? _x1 is 1 chip _st is stack of 10 chips
--vw_prop_chip_10dollar_x1 --! £10
--vw_prop_chip_50dollar_x1 --! £50
--vw_prop_chip_100dollar_x1 --! £100
--vw_prop_chip_50dollar_st --! £50 stack
--vw_prop_chip_100dollar_st --! £100 stack
--vw_prop_chip_500dollar_x1 --! £500
--vw_prop_chip_1kdollar_x1 --! £1,000
--vw_prop_chip_500dollar_st --! £500 stack
--vw_prop_chip_5kdollar_x1 --! £5,000
--vw_prop_chip_1kdollar_st --! £1,000 stack
--vw_prop_chip_10kdollar_x1 --! £10,000
--vw_prop_chip_5kdollar_st --! £5,000 stack
--vw_prop_chip_10kdollar_st --! £10,000 stack
--vw_prop_plaq_5kdollar_x1 --! £5,000
--vw_prop_plaq_5kdollar_st --! £5,000 stack
--vw_prop_plaq_10kdollar_x1 --! £10,0000
--vw_prop_plaq_10kdollar_st --! £10,0000 stack
--* below not included in func in decompiled code
--vw_prop_vw_chips_pile_01a.ydr
--vw_prop_vw_chips_pile_02a.ydr
--vw_prop_vw_chips_pile_03a.ydr
--vw_prop_vw_coin_01a.ydr
amount = tonumber(amount)
if amount < 1000000 then
denominations = {10,50,100,500,1000,5000,10000}
chips = {}
local max = 7
for k,v in ipairs(denominations) do
while amount >= denominations[max] do
table.insert(chips,denominations[max])
amount = amount - denominations[max]
end
max = max - 1
end
for k,v in ipairs(chips) do
chips[k] = getChipFromAmount(v)
end
return chips
elseif amount < 5000000 then
return {"vw_prop_vw_chips_pile_01a"}
elseif amount < 10000000 then
return {"vw_prop_vw_chips_pile_02a"}
else
return {"vw_prop_vw_chips_pile_03a"}
end
return {"vw_prop_chip_500dollar_st"}
end
local chipsFromAmount = {
[1] = "vw_prop_vw_coin_01a",
[10] = "vw_prop_chip_10dollar_x1",
[50] = "vw_prop_chip_50dollar_x1",
[100] = "vw_prop_chip_100dollar_x1",
[500] = "vw_prop_chip_500dollar_x1",
[1000] = "vw_prop_chip_1kdollar_x1",
[5000] = "vw_prop_plaq_5kdollar_x1",
[10000] = "vw_prop_plaq_10kdollar_x1",
}
function getChipFromAmount(amount)
return chipsFromAmount[amount]
end
function blackjack_func_374(betAmount, iParam1, chairId, bParam3) --returns vector3
--betAmount, 0, chairID, someBool
-- print("blackjack_func_374 params:")
-- print("betAmount: " .. tostring(betAmount))
-- print("iParam1: " .. tostring(iParam1))
-- print("chairId: " .. tostring(chairId))
-- print("bParam3: " .. tostring(bParam3))
fVar0 = 0.0
vVar1 = vector3(0,0,0)
if not bParam3 then
-- print("now checking betAmount: " .. tostring(betAmount))
if betAmount == 10 then
fVar0 = 0.95
elseif betAmount == 20 then
fVar0 = 0.896
elseif betAmount == 30 then
fVar0 = 0.901
elseif betAmount == 40 then
fVar0 = 0.907
elseif betAmount == 50 then
fVar0 = 0.95
elseif betAmount == 60 then
fVar0 = 0.917
elseif betAmount == 70 then
fVar0 = 0.922
elseif betAmount == 80 then
fVar0 = 0.927
elseif betAmount == 90 then
fVar0 = 0.932
elseif betAmount == 100 then
fVar0 = 0.95
elseif betAmount == 150 then
fVar0 = 0.904
elseif betAmount == 200 then
fVar0 = 0.899
elseif betAmount == 250 then
fVar0 = 0.914
elseif betAmount == 300 then
fVar0 = 0.904
elseif betAmount == 350 then
fVar0 = 0.924
elseif betAmount == 400 then
fVar0 = 0.91
elseif betAmount == 450 then
fVar0 = 0.935
elseif betAmount == 500 then
fVar0 = 0.95
elseif betAmount == 1000 then
fVar0 = 0.95
elseif betAmount == 1500 then
fVar0 = 0.904
elseif betAmount == 2000 then
fVar0 = 0.899
elseif betAmount == 2500 then
fVar0 = 0.915
elseif betAmount == 3000 then
fVar0 = 0.904
elseif betAmount == 3500 then
fVar0 = 0.925
elseif betAmount == 4000 then
fVar0 = 0.91
elseif betAmount == 4500 then
fVar0 = 0.935
elseif betAmount == 5000 then
fVar0 = 0.95
elseif betAmount == 6000 then
fVar0 = 0.919
elseif betAmount == 7000 then
fVar0 = 0.924
elseif betAmount == 8000 then
fVar0 = 0.93
elseif betAmount == 9000 then
fVar0 = 0.935
elseif betAmount == 10000 then
fVar0 = 0.95
elseif betAmount == 15000 then
fVar0 = 0.902
elseif betAmount == 20000 then
fVar0 = 0.897
elseif betAmount == 25000 then
fVar0 = 0.912
elseif betAmount == 30000 then
fVar0 = 0.902
elseif betAmount == 35000 then
fVar0 = 0.922
elseif betAmount == 40000 then
fVar0 = 0.907
elseif betAmount == 45000 then
fVar0 = 0.932
elseif betAmount == 50000 then
fVar0 = 0.912
end
if chairId == 0 then
if iParam1 == 0 then
vVar1 = vector3(0.712625, 0.170625, 0.0001)
elseif iParam1 == 1 then
vVar1 = vector3(0.6658, 0.218375, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(0.756775, 0.292775, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(0.701875, 0.3439, 0.0)
end
elseif chairId == 1 then
if iParam1 == 0 then
vVar1 = vector3(0.278125, -0.2571, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(0.280375, -0.190375, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(0.397775, -0.208525, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(0.39715, -0.1354, 0.0)
end
elseif chairId == 2 then
if iParam1 == 0 then
vVar1 = vector3(-0.30305, -0.2464, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(-0.257975, -0.19715, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(-0.186575, -0.2861, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(-0.141675, -0.237925, 0.0)
end
elseif chairId == 3 then
if iParam1 == 0 then
vVar1 = vector3(-0.72855, 0.17345, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(-0.652825, 0.177525, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(-0.6783, 0.0744, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(-0.604425, 0.082575, 0.0)
end
end
else
if betAmount == 10 then
fVar0 = 0.95
elseif betAmount == 20 then
fVar0 = 0.896
elseif betAmount == 30 then
fVar0 = 0.901
elseif betAmount == 40 then
fVar0 = 0.907
elseif betAmount == 50 then
fVar0 = 0.95
elseif betAmount == 60 then
fVar0 = 0.917
elseif betAmount == 70 then
fVar0 = 0.922
elseif betAmount == 80 then
fVar0 = 0.927
elseif betAmount == 90 then
fVar0 = 0.932
elseif betAmount == 100 then
fVar0 = 0.95
elseif betAmount == 150 then
fVar0 = 0.904
elseif betAmount == 200 then
fVar0 = 0.899
elseif betAmount == 250 then
fVar0 = 0.914
elseif betAmount == 300 then
fVar0 = 0.904
elseif betAmount == 350 then
fVar0 = 0.924
elseif betAmount == 400 then
fVar0 = 0.91
elseif betAmount == 450 then
fVar0 = 0.935
elseif betAmount == 500 then
fVar0 = 0.95
elseif betAmount == 1000 then
fVar0 = 0.95
elseif betAmount == 1500 then
fVar0 = 0.904
elseif betAmount == 2000 then
fVar0 = 0.899
elseif betAmount == 2500 then
fVar0 = 0.915
elseif betAmount == 3000 then
fVar0 = 0.904
elseif betAmount == 3500 then
fVar0 = 0.925
elseif betAmount == 4000 then
fVar0 = 0.91
elseif betAmount == 4500 then
fVar0 = 0.935
elseif betAmount == 5000 then
fVar0 = 0.953
elseif betAmount == 6000 then
fVar0 = 0.919
elseif betAmount == 7000 then
fVar0 = 0.924
elseif betAmount == 8000 then
fVar0 = 0.93
elseif betAmount == 9000 then
fVar0 = 0.935
elseif betAmount == 10000 then
fVar0 = 0.95
elseif betAmount == 15000 then
fVar0 = 0.902
elseif betAmount == 20000 then
fVar0 = 0.897
elseif betAmount == 25000 then
fVar0 = 0.912
elseif betAmount == 30000 then
fVar0 = 0.902
elseif betAmount == 35000 then
fVar0 = 0.922
elseif betAmount == 40000 then
fVar0 = 0.907
elseif betAmount == 45000 then
fVar0 = 0.932
elseif betAmount == 50000 then
fVar0 = 0.912
end
-- case 5000:
-- case 10000:
-- case 15000:
-- case 20000:
-- case 25000:
-- case 30000:
-- case 35000:
-- case 40000:
-- case 45000:
if betAmount == 50000 then
if chairId == 0 then
if iParam1 == 0 then
vVar1 = vector3(0.6931, 0.1952, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(0.724925, 0.26955, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(0.7374, 0.349625, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(0.76415, 0.419225, 0.0)
end
elseif chairId == 1 then
if iParam1 == 0 then
vVar1 = vector3(0.2827, -0.227825, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(0.3605, -0.1898, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(0.4309, -0.16365, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(0.49275, -0.111575, 0.0)
end
elseif chairId == 2 then
if iParam1 == 0 then
vVar1 = vector3(-0.279425, -0.2238, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(-0.200775, -0.25855, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(-0.125775, -0.26815, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(-0.05615, -0.29435, 0.0)
end
elseif chairId == 3 then
if iParam1 == 0 then
vVar1 = vector3(-0.685925, 0.173275, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(-0.6568, 0.092525, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(-0.612875, 0.033025, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(-0.58465, -0.0374, 0.0)
end
end
else
if chairId == 0 then
if iParam1 == 0 then
vVar1 = vector3(0.712625, 0.170625, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(0.6658, 0.218375, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(0.756775, 0.292775, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(0.701875, 0.3439, 0.0)
end
elseif chairId == 1 then
if iParam1 == 0 then
vVar1 = vector3(0.278125, -0.2571, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(0.280375, -0.190375, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(0.397775, -0.208525, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(0.39715, -0.1354, 0.0)
end
elseif chairId == 2 then
if iParam1 == 0 then
vVar1 = vector3(-0.30305, -0.2464, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(-0.257975, -0.19715, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(-0.186575, -0.2861, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(-0.141675, -0.237925, 0.0)
end
elseif chairId == 3 then
if iParam1 == 0 then
vVar1 = vector3(-0.72855, 0.17345, 0.0)
elseif iParam1 == 1 then
vVar1 = vector3(-0.652825, 0.177525, 0.0)
elseif iParam1 == 2 then
vVar1 = vector3(-0.6783, 0.0744, 0.0)
elseif iParam1 == 3 then
vVar1 = vector3(-0.604425, 0.082575, 0.0)
end
end
end
end
-- print(vVar1)
-- print(vVar1.z)
-- print(fVar0)
--vVar1.z = fVar0
vVar1 = vVar1 + vector3(0.0,0.0,fVar0)
return vVar1
end
function blackjack_func_373(iParam0, iParam1, iParam2, bParam3)
if not bParam3 then
if iParam2 == 0 then
if iParam1 == 0 then
return vector3(0.0, 0.0, 72)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, 64.8)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, 74.52)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, 72)
end
elseif iParam2 == 1 then
if iParam1 == 0 then
return vector3(0.0, 0.0, 12.96)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, 29.16)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, 32.04)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, 32.04)
end
elseif iParam2 == 2 then
if iParam1 == 0 then
return vector3(0.0, 0.0, -18.36)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, -18.72)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, -15.48)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, -18)
end
elseif iParam2 == 3 then
if iParam1 == 0 then
return vector3(0.0, 0.0, -79.2)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, -68.76)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, -57.6)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, -64.8)
end
end
else
-- case 5000 then
-- case 10000 then
-- case 15000 then
-- case 20000 then
-- case 25000 then
-- case 30000 then
-- case 35000 then
-- case 40000 then
-- case 45000 then
if iParam0 == 50000 then
if iParam2 == 0 then
if iParam1 == 0 then
return vector3(0.0, 0.0, -16.56)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, -22.32)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, -10.8)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, -9.72)
end
elseif iParam2 == 1 then
if iParam1 == 0 then
return vector3(0.0, 0.0, -69.12)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, -64.8)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, -58.68)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, -51.12)
end
elseif iParam2 == 2 then
if iParam1 == 0 then
return vector3(0.0, 0.0, -112.32)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, -108.36)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, -99.72)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, -102.6)
end
elseif iParam2 == 3 then
if iParam1 == 0 then
return vector3(0.0, 0.0, -155.88)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, -151.92)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, -147.24)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, -146.52)
end
end
else
if iParam2 == 0 then
if iParam1 == 0 then
return vector3(0.0, 0.0, 72)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, 64.8)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, 74.52)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, 72)
end
elseif iParam2 == 1 then
if iParam1 == 0 then
return vector3(0.0, 0.0, 12.96)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, 29.16)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, 32.04)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, 32.04)
end
elseif iParam2 == 2 then
if iParam1 == 0 then
return vector3(0.0, 0.0, -18.36)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, -18.72)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, -15.48)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, -18)
end
elseif iParam2 == 3 then
if iParam1 == 0 then
return vector3(0.0, 0.0, -79.2)
elseif iParam1 == 1 then
return vector3(0.0, 0.0, -68.76)
elseif iParam1 == 2 then
return vector3(0.0, 0.0, -57.6)
elseif iParam1 == 3 then
return vector3(0.0, 0.0, -64.8)
end
end
end
end
return vector3(0.0, 0.0, 0)
end
function ButtonMessage(text)
BeginTextCommandScaleformString("STRING")
AddTextComponentScaleform(text)
EndTextCommandScaleformString()
end
function Button(ControlButton)
N_0xe83a3e3557a56640(ControlButton)
end
function setupBlackjackInstructionalScaleform(scaleform)
local scaleform = RequestScaleformMovie(scaleform)
while not HasScaleformMovieLoaded(scaleform) do
Wait(0)
end
PushScaleformMovieFunction(scaleform, "CLEAR_ALL")
PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "SET_CLEAR_SPACE")
PushScaleformMovieFunctionParameterInt(200)
PopScaleformMovieFunctionVoid()
-- PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
-- PushScaleformMovieFunctionParameterInt(1)
-- Button(GetControlInstructionalButton(2, 194, true)) -- The button to display
-- ButtonMessage("Leave table") --BACKSPACE
-- PopScaleformMovieFunctionVoid()
-- PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
-- PushScaleformMovieFunctionParameterInt(0)
-- Button(GetControlInstructionalButton(2, 191, true))
-- ButtonMessage("Place bet") --ENTER
-- PopScaleformMovieFunctionVoid()
-- PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
-- PushScaleformMovieFunctionParameterInt(2)
-- Button(GetControlInstructionalButton(2, 11, true))
-- ButtonMessage("Lower bet") --Page Down
-- PopScaleformMovieFunctionVoid()
-- PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
-- PushScaleformMovieFunctionParameterInt(3)
-- Button(GetControlInstructionalButton(2, 10, true))
-- ButtonMessage("Increase bet") --Page Up
-- PopScaleformMovieFunctionVoid()
-- PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
-- PushScaleformMovieFunctionParameterInt(4)
-- Button(GetControlInstructionalButton(2, 22, true))
-- ButtonMessage("Custom bet") --Space
-- PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "DRAW_INSTRUCTIONAL_BUTTONS")
PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "SET_BACKGROUND_COLOUR")
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(80)
PopScaleformMovieFunctionVoid()
return scaleform
end
function setupBlackjackMidBetScaleform(scaleform)
local scaleform = RequestScaleformMovie(scaleform)
while not HasScaleformMovieLoaded(scaleform) do
Wait(0)
end
PushScaleformMovieFunction(scaleform, "CLEAR_ALL")
PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "SET_CLEAR_SPACE")
PushScaleformMovieFunctionParameterInt(200)
PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
PushScaleformMovieFunctionParameterInt(1)
Button(GetControlInstructionalButton(2, 194, true)) -- The button to display
ButtonMessage("Stand") --BACKSPACE
PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "SET_DATA_SLOT")
PushScaleformMovieFunctionParameterInt(4)
Button(GetControlInstructionalButton(2, 22, true))
ButtonMessage("Hit") --Space
PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "DRAW_INSTRUCTIONAL_BUTTONS")
PopScaleformMovieFunctionVoid()
PushScaleformMovieFunction(scaleform, "SET_BACKGROUND_COLOUR")
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(0)
PushScaleformMovieFunctionParameterInt(80)
PopScaleformMovieFunctionVoid()
return scaleform
end
function getDealerIdFromEntity(dealerEntity)
local closestID = nil
local closestDist = 10000
local dealerCoords = GetEntityCoords(dealerEntity)
for k,v in pairs(cfg.blackjackTables) do
local actualDealerPos = v.dealerPos
if #(dealerCoords-dealerPos) < closestDist then
closestID = k
closestDist = #(dealerCoords-dealerPos)
end
end
return closestID
end
function setBlackjackDealerPedVoiceGroup(randomNumber,dealerPed)
if randomNumber == 0 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_M_Y_Casino_01_WHITE_01"))
elseif randomNumber == 1 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_M_Y_Casino_01_ASIAN_01"))
elseif randomNumber == 2 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_M_Y_Casino_01_ASIAN_02"))
elseif randomNumber == 3 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_M_Y_Casino_01_ASIAN_01"))
elseif randomNumber == 4 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_M_Y_Casino_01_WHITE_01"))
elseif randomNumber == 5 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_M_Y_Casino_01_WHITE_02"))
elseif randomNumber == 6 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_M_Y_Casino_01_WHITE_01"))
elseif randomNumber == 7 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_F_Y_Casino_01_ASIAN_01"))
elseif randomNumber == 8 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_F_Y_Casino_01_ASIAN_02"))
elseif randomNumber == 9 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_F_Y_Casino_01_ASIAN_01"))
elseif randomNumber == 10 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_F_Y_Casino_01_ASIAN_02"))
elseif randomNumber == 11 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_F_Y_Casino_01_LATINA_01"))
elseif randomNumber == 12 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_F_Y_Casino_01_LATINA_02"))
elseif randomNumber == 13 then
SetPedVoiceGroup(dealerPed,GetHashKey("S_F_Y_Casino_01_LATINA_01"))
end
end
function setBlackjackDealerClothes(randomNumber,dealerPed)
if randomNumber == 0 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 3, 0, 0)
SetPedComponentVariation(dealerPed, 1, 1, 0, 0)
SetPedComponentVariation(dealerPed, 2, 3, 0, 0)
SetPedComponentVariation(dealerPed, 3, 1, 0, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 3, 0, 0)
SetPedComponentVariation(dealerPed, 10, 1, 0, 0)
SetPedComponentVariation(dealerPed, 11, 1, 0, 0)
elseif randomNumber == 1 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 2, 2, 0)
SetPedComponentVariation(dealerPed, 1, 1, 0, 0)
SetPedComponentVariation(dealerPed, 2, 4, 0, 0)
SetPedComponentVariation(dealerPed, 3, 0, 3, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 1, 0, 0)
SetPedComponentVariation(dealerPed, 10, 1, 0, 0)
SetPedComponentVariation(dealerPed, 11, 1, 0, 0)
elseif randomNumber == 2 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 2, 1, 0)
SetPedComponentVariation(dealerPed, 1, 1, 0, 0)
SetPedComponentVariation(dealerPed, 2, 2, 0, 0)
SetPedComponentVariation(dealerPed, 3, 0, 3, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 1, 0, 0)
SetPedComponentVariation(dealerPed, 10, 1, 0, 0)
SetPedComponentVariation(dealerPed, 11, 1, 0, 0)
elseif randomNumber == 3 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 2, 0, 0)
SetPedComponentVariation(dealerPed, 1, 1, 0, 0)
SetPedComponentVariation(dealerPed, 2, 3, 0, 0)
SetPedComponentVariation(dealerPed, 3, 1, 3, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 3, 0, 0)
SetPedComponentVariation(dealerPed, 10, 1, 0, 0)
SetPedComponentVariation(dealerPed, 11, 1, 0, 0)
elseif randomNumber == 4 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 4, 2, 0)
SetPedComponentVariation(dealerPed, 1, 1, 0, 0)
SetPedComponentVariation(dealerPed, 2, 3, 0, 0)
SetPedComponentVariation(dealerPed, 3, 0, 0, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 1, 0, 0)
SetPedComponentVariation(dealerPed, 10, 1, 0, 0)
SetPedComponentVariation(dealerPed, 11, 1, 0, 0)
elseif randomNumber == 5 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 4, 0, 0)
SetPedComponentVariation(dealerPed, 1, 1, 0, 0)
SetPedComponentVariation(dealerPed, 2, 0, 0, 0)
SetPedComponentVariation(dealerPed, 3, 0, 0, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 1, 0, 0)
SetPedComponentVariation(dealerPed, 10, 1, 0, 0)
SetPedComponentVariation(dealerPed, 11, 1, 0, 0)
elseif randomNumber == 6 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 4, 1, 0)
SetPedComponentVariation(dealerPed, 1, 1, 0, 0)
SetPedComponentVariation(dealerPed, 2, 4, 0, 0)
SetPedComponentVariation(dealerPed, 3, 1, 0, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 3, 0, 0)
SetPedComponentVariation(dealerPed, 10, 1, 0, 0)
SetPedComponentVariation(dealerPed, 11, 1, 0, 0)
elseif randomNumber == 7 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 1, 1, 0)
SetPedComponentVariation(dealerPed, 1, 0, 0, 0)
SetPedComponentVariation(dealerPed, 2, 1, 0, 0)
SetPedComponentVariation(dealerPed, 3, 0, 3, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 0, 0, 0)
SetPedComponentVariation(dealerPed, 7, 0, 0, 0)
SetPedComponentVariation(dealerPed, 8, 0, 0, 0)
SetPedComponentVariation(dealerPed, 10, 0, 0, 0)
SetPedComponentVariation(dealerPed, 11, 0, 0, 0)
elseif randomNumber == 8 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 1, 1, 0)
SetPedComponentVariation(dealerPed, 1, 0, 0, 0)
SetPedComponentVariation(dealerPed, 2, 1, 1, 0)
SetPedComponentVariation(dealerPed, 3, 1, 3, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 0, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 1, 0, 0)
SetPedComponentVariation(dealerPed, 10, 0, 0, 0)
SetPedComponentVariation(dealerPed, 11, 0, 0, 0)
elseif randomNumber == 9 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 2, 0, 0)
SetPedComponentVariation(dealerPed, 1, 0, 0, 0)
SetPedComponentVariation(dealerPed, 2, 2, 0, 0)
SetPedComponentVariation(dealerPed, 3, 2, 3, 0)
SetPedComponentVariation(dealerPed, 4, 0, 0, 0)
SetPedComponentVariation(dealerPed, 6, 0, 0, 0)
SetPedComponentVariation(dealerPed, 7, 0, 0, 0)
SetPedComponentVariation(dealerPed, 8, 2, 0, 0)
SetPedComponentVariation(dealerPed, 10, 0, 0, 0)
SetPedComponentVariation(dealerPed, 11, 0, 0, 0)
elseif randomNumber == 10 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 2, 1, 0)
SetPedComponentVariation(dealerPed, 1, 0, 0, 0)
SetPedComponentVariation(dealerPed, 2, 2, 1, 0)
SetPedComponentVariation(dealerPed, 3, 3, 3, 0)
SetPedComponentVariation(dealerPed, 4, 1, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 3, 0, 0)
SetPedComponentVariation(dealerPed, 10, 0, 0, 0)
SetPedComponentVariation(dealerPed, 11, 0, 0, 0)
elseif randomNumber == 11 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 3, 0, 0)
SetPedComponentVariation(dealerPed, 1, 0, 0, 0)
SetPedComponentVariation(dealerPed, 2, 3, 0, 0)
SetPedComponentVariation(dealerPed, 3, 0, 1, 0)
SetPedComponentVariation(dealerPed, 4, 1, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 1, 0, 0)
SetPedComponentVariation(dealerPed, 8, 0, 0, 0)
SetPedComponentVariation(dealerPed, 10, 0, 0, 0)
SetPedComponentVariation(dealerPed, 11, 0, 0, 0)
SetPedPropIndex(dealerPed, 1, 0, 0, false)
elseif randomNumber == 12 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 3, 1, 0)
SetPedComponentVariation(dealerPed, 1, 0, 0, 0)
SetPedComponentVariation(dealerPed, 2, 3, 1, 0)
SetPedComponentVariation(dealerPed, 3, 1, 1, 0)
SetPedComponentVariation(dealerPed, 4, 1, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 2, 0, 0)
SetPedComponentVariation(dealerPed, 8, 1, 0, 0)
SetPedComponentVariation(dealerPed, 10, 0, 0, 0)
SetPedComponentVariation(dealerPed, 11, 0, 0, 0)
elseif randomNumber == 13 then
SetPedDefaultComponentVariation(dealerPed)
SetPedComponentVariation(dealerPed, 0, 4, 0, 0)
SetPedComponentVariation(dealerPed, 1, 0, 0, 0)
SetPedComponentVariation(dealerPed, 2, 4, 0, 0)
SetPedComponentVariation(dealerPed, 3, 2, 1, 0)
SetPedComponentVariation(dealerPed, 4, 1, 0, 0)
SetPedComponentVariation(dealerPed, 6, 1, 0, 0)
SetPedComponentVariation(dealerPed, 7, 1, 0, 0)
SetPedComponentVariation(dealerPed, 8, 2, 0, 0)
SetPedComponentVariation(dealerPed, 10, 0, 0, 0)
SetPedComponentVariation(dealerPed, 11, 0, 0, 0)
SetPedPropIndex(dealerPed, 1, 0, 0, false)
end
end
function DrawTimerBar2(title, text, barIndex)
local width = 0.13
local hTextMargin = 0.003
local rectHeight = 0.038
local textMargin = 0.008
local rectX = GetSafeZoneSize() - width + width / 2
local rectY = GetSafeZoneSize() - rectHeight + rectHeight / 2 - (barIndex - 1) * (rectHeight + 0.005)
DrawSprite("timerbars", "all_black_bg", rectX, rectY, width, 0.038, 0, 0, 0, 0, 128)
DrawTimerBarText(title, GetSafeZoneSize() - width + hTextMargin, rectY - textMargin, 0.32)
DrawTimerBarText(string.upper(text), GetSafeZoneSize() - hTextMargin, rectY - 0.0175, 0.5, true, width / 2)
end
function DrawNoiseBar(noise, barIndex)
DrawTimerBar2("NOISE", math.floor(noise), barIndex)
end
function DrawTimerBarText(text, x, y, scale, right, width)
SetTextFont(0)
SetTextScale(scale, scale)
SetTextColour(254, 254, 254, 255)
if right then
SetTextWrap(x - width, x)
SetTextRightJustify(true)
end
BeginTextCommandDisplayText("STRING")
AddTextComponentSubstringPlayerName(text)
EndTextCommandDisplayText(x, y)
end
function DrawAdvancedNativeText(x,y,w,h,sc, text, r,g,b,a,font,jus)
SetTextFont(font)
SetTextScale(sc, sc)
N_0x4e096588b13ffeca(jus)
SetTextColour(254, 254, 254, 255)
SetTextEntry("STRING")
AddTextComponentString(text)
DrawText(x - 0.1+w, y - 0.02+h)
end
RegisterNetEvent("blackjack:notify")
AddEventHandler("blackjack:notify",function(msg)
QBCore.Functions.Notify(msg, 'success', 3500)
end)
function getGenericTextInput(type)
if type == nil then type = "" end
AddTextEntry('FMMC_MPM_NA', "Enter " .. tostring(type))
DisplayOnscreenKeyboard(1, "FMMC_MPM_NA", "Enter " .. tostring(type) .. " message", "", "", "", "", 30)
while (UpdateOnscreenKeyboard() == 0) do
DisableAllControlActions(0);
Wait(0);
end
if (GetOnscreenKeyboardResult()) then
local result = GetOnscreenKeyboardResult()
if result then
return result
end
end
return false
end
--Debug Commands--
RegisterCommand("cleantable",function()
for k,v in pairs(cardObjects) do
for _,obj in pairs(v) do
DeleteObject(obj)
end
end
end)
-- RegisterCommand("debugtable",function()
-- print(dump(blackjackTableData))
-- end)
-- RegisterCommand("debugtable2",function()
-- TriggerServerEvent("Blackjack:requestBlackjackTableData")
-- end)
-- RegisterCommand("testcasinosound", function()
-- closestDealerPed, closestDealerPedDistance = getClosestDealer()
-- PlayAmbientSpeech1(closestDealerPed,"MINIGAME_DEALER_BUSTS","SPEECH_PARAMS_FORCE_NORMAL_CLEAR",1)
-- end)
-- RegisterCommand("testcasinoanim", function()
-- TaskPlayAnim(PlayerPedId(), "anim_casino_b@amb@casino@games@blackjack@dealer", "check_card", 3.0, 1.0, -1, 2, 0, 0, 0, 0 )
-- -- print("animation started")
-- -- while not HasEntityAnimFinished(PlayerPedId(), "anim_casino_b@amb@casino@games@blackjack@dealer", "check_card",3) do
-- -- -- print("waiting for check card animation to end")
-- -- Wait(0)
-- -- end
-- while true do
-- -- print("hasAnimEventFired: " .. tostring(HasAnimEventFired(PlayerPedId(),585557868)))
-- Wait(0)
-- end
-- -- print("animation finished")
-- end)
-- RegisterCommand("debugblackjack", function()
-- -- print("closestBlackjackChair: " .. tostring(closestChairDist))
-- -- print("closestChair: " .. tostring(closestChair))
-- -- print("Local_198f_247: " .. tostring(Local_198f_247))
-- end)
-- RegisterCommand("debugtablepeds",function()
-- print(dump(dealerPeds))
-- end)
-- RegisterCommand("testcleanup",function()
-- print(dump(cardObjects))
-- end)
-- RegisterCommand("hitme",function()
-- requestCard()
-- end)
-- RegisterCommand("stand",function()
-- declineCard()
-- end)
-- RegisterCommand("dealerhit",function()
-- closestDealerPed, closestDealerPedDistance = getClosestDealer()
-- startStandOrHit(gameId,closestDealerPed,1)
-- end)
-- RegisterCommand("dealergive",function()
-- closestDealerPed, closestDealerPedDistance = getClosestDealer()
-- cardData = {20,19}
-- chairId = 7
-- tableId = 1
-- cardObj = startDealing(closestChair,closestDealerPed,gameId,cardData,chairId,0,10,tableId)
-- SetTimeout(5000,function()
-- DeleteObject(cardObj)
-- -- print("DELETED.")
-- end)
-- end)
-- RegisterCommand("debugchips", function(source,args,rawCommand)
-- local chips = args[2]
-- -- print("getChipPropFromAmount(" .. tostring(chips) .. ")")
-- getChipPropFromAmount(chips)
-- end)