532 lines
15 KiB
Lua
532 lines
15 KiB
Lua
|
Config = {}
|
||
|
Config.Locale = 'en'
|
||
|
QBCore = exports['qb-core']:GetCoreObject()
|
||
|
|
||
|
-- YOUR MAIN SETUPS
|
||
|
Config.Debug = false -- enable debug messages in sv/cl console
|
||
|
Config.TimeLeftAfter = 15 -- time remaining after one player betted (dealer actions start timeout)
|
||
|
Config.PlayerDecideTime = 15 -- player decide time (when watching our cards)
|
||
|
Config.HowToSpeed = 5000 -- x seconds to change to next
|
||
|
Config.ShowCardsAfterReveal = true -- showing cameras on the players cards when revealing them
|
||
|
|
||
|
Config.Pokers = {
|
||
|
[1] = {
|
||
|
Position = vector3(996.17, 51.69, 68.45),
|
||
|
Heading = 318.91,
|
||
|
MaximumBet = 2500,
|
||
|
MinimumBet = 50
|
||
|
},
|
||
|
[2] = {
|
||
|
Position = vector3(1000.66, 50.88, 68.45),
|
||
|
Heading = 6.73,
|
||
|
MaximumBet = 2500,
|
||
|
MinimumBet = 50
|
||
|
},
|
||
|
[3] = {
|
||
|
Position = vector3(984.97, 66.64, 69.25),
|
||
|
Heading = 3.39,
|
||
|
MaximumBet = 2000,
|
||
|
MinimumBet = 50
|
||
|
},
|
||
|
[4] = {
|
||
|
Position = vector3(998.44, 60.99, 68.45),
|
||
|
Heading = 191.77,
|
||
|
MaximumBet = 2000,
|
||
|
MinimumBet = 50
|
||
|
},
|
||
|
[5] = {
|
||
|
Position = vector3(994.89, 58.29, 68.45),
|
||
|
Heading = 237.13,
|
||
|
MaximumBet = 2000,
|
||
|
MinimumBet = 50
|
||
|
},
|
||
|
[6] = {
|
||
|
Position = vector3(988.45, 64.38, 69.25),
|
||
|
Heading = 278.52,
|
||
|
MaximumBet = 2000,
|
||
|
MinimumBet = 50
|
||
|
},
|
||
|
[7] = {
|
||
|
Position = vector3(991.56, 40.10, 69.25),
|
||
|
Heading = 200.84,
|
||
|
MaximumBet = 2000,
|
||
|
MinimumBet = 50
|
||
|
},
|
||
|
[8] = {
|
||
|
Position = vector3(993.20, 43.70, 69.25),
|
||
|
Heading = 279.25,
|
||
|
MaximumBet = 2000,
|
||
|
MinimumBet = 50
|
||
|
}
|
||
|
}
|
||
|
|
||
|
-- DO NOT WORRY ABOUT DOWNSIDE
|
||
|
|
||
|
Config.Tables = {
|
||
|
'h4_prop_casino_3cardpoker_01a',
|
||
|
'h4_prop_casino_3cardpoker_01b',
|
||
|
'h4_prop_casino_3cardpoker_01c',
|
||
|
'h4_prop_casino_3cardpoker_01e',
|
||
|
'vw_prop_casino_3cardpoker_01b',
|
||
|
'vw_prop_casino_3cardpoker_01'
|
||
|
}
|
||
|
|
||
|
Config.DealerAnimDictShared = 'anim_casino_b@amb@casino@games@shared@dealer@'
|
||
|
Config.DealerAnimDictPoker = 'anim_casino_b@amb@casino@games@threecardpoker@dealer'
|
||
|
Config.PlayerAnimDictShared = 'anim_casino_b@amb@casino@games@shared@player@'
|
||
|
Config.PlayerAnimDictPoker = 'anim_casino_b@amb@casino@games@threecardpoker@player'
|
||
|
|
||
|
Config.IncreaseAmounts = function(currentAmount)
|
||
|
if currentAmount < 500 then
|
||
|
return 50
|
||
|
elseif currentAmount >= 500 and currentAmount < 2000 then
|
||
|
return 100
|
||
|
elseif currentAmount >= 2000 and currentAmount < 5000 then
|
||
|
return 200
|
||
|
elseif currentAmount >= 5000 and currentAmount < 10000 then
|
||
|
return 500
|
||
|
elseif currentAmount >= 10000 then
|
||
|
return 1000
|
||
|
else
|
||
|
return 50
|
||
|
end
|
||
|
end
|
||
|
|
||
|
Config.PokerChairs = {
|
||
|
['Chair_Base_01'] = 1,
|
||
|
['Chair_Base_02'] = 2,
|
||
|
['Chair_Base_03'] = 3,
|
||
|
['Chair_Base_04'] = 4
|
||
|
}
|
||
|
|
||
|
Config.GetCardType = function(cardArrayId)
|
||
|
if cardArrayId >= 1 and cardArrayId <= 13 then -- CLUBS
|
||
|
return 0
|
||
|
elseif cardArrayId >= 14 and cardArrayId <= 26 then -- DIAMOND
|
||
|
return 1
|
||
|
elseif cardArrayId >= 26 and cardArrayId <= 39 then -- HEARTS
|
||
|
return 2
|
||
|
elseif cardArrayId >= 39 and cardArrayId <= 52 then -- SPADES
|
||
|
return 3
|
||
|
end
|
||
|
end
|
||
|
|
||
|
Config.GetCardValue = function(cardArrayId)
|
||
|
local vals = {
|
||
|
-- 2
|
||
|
[2] = 2,
|
||
|
[15] = 2,
|
||
|
[28] = 2,
|
||
|
[41] = 2,
|
||
|
-- 3
|
||
|
[3] = 3,
|
||
|
[16] = 3,
|
||
|
[29] = 3,
|
||
|
[42] = 3,
|
||
|
-- 4
|
||
|
[4] = 4,
|
||
|
[17] = 4,
|
||
|
[30] = 4,
|
||
|
[43] = 4,
|
||
|
-- 5
|
||
|
[5] = 5,
|
||
|
[18] = 5,
|
||
|
[31] = 5,
|
||
|
[44] = 5,
|
||
|
-- 6
|
||
|
[6] = 6,
|
||
|
[19] = 6,
|
||
|
[32] = 6,
|
||
|
[45] = 6,
|
||
|
-- 7
|
||
|
[7] = 7,
|
||
|
[20] = 7,
|
||
|
[33] = 7,
|
||
|
[46] = 7,
|
||
|
-- 8
|
||
|
[8] = 8,
|
||
|
[21] = 8,
|
||
|
[34] = 8,
|
||
|
[47] = 8,
|
||
|
-- 9
|
||
|
[9] = 9,
|
||
|
[22] = 9,
|
||
|
[35] = 9,
|
||
|
[48] = 9,
|
||
|
-- 10
|
||
|
[10] = 10,
|
||
|
[23] = 10,
|
||
|
[36] = 10,
|
||
|
[49] = 10,
|
||
|
-- JACK
|
||
|
[11] = 11,
|
||
|
[24] = 11,
|
||
|
[37] = 11,
|
||
|
[50] = 11,
|
||
|
-- QUEEN
|
||
|
[12] = 12,
|
||
|
[25] = 12,
|
||
|
[38] = 12,
|
||
|
[51] = 12,
|
||
|
-- KING
|
||
|
[13] = 13,
|
||
|
[26] = 13,
|
||
|
[39] = 13,
|
||
|
[52] = 13,
|
||
|
-- ACE
|
||
|
[1] = 14,
|
||
|
[14] = 14,
|
||
|
[27] = 14,
|
||
|
[40] = 14
|
||
|
}
|
||
|
|
||
|
if vals[cardArrayId] then
|
||
|
return vals[cardArrayId]
|
||
|
else
|
||
|
return 0
|
||
|
end
|
||
|
end
|
||
|
|
||
|
Config.Cards = {
|
||
|
-- i kwow its a default array, not an object key array, i know what i am doing, its easier to see the numbers like this
|
||
|
[1] = 'vw_prop_vw_club_char_a_a',
|
||
|
[2] = 'vw_prop_vw_club_char_02a',
|
||
|
[3] = 'vw_prop_vw_club_char_03a',
|
||
|
[4] = 'vw_prop_vw_club_char_04a',
|
||
|
[5] = 'vw_prop_vw_club_char_05a',
|
||
|
[6] = 'vw_prop_vw_club_char_06a',
|
||
|
[7] = 'vw_prop_vw_club_char_07a',
|
||
|
[8] = 'vw_prop_vw_club_char_08a',
|
||
|
[9] = 'vw_prop_vw_club_char_09a',
|
||
|
[10] = 'vw_prop_vw_club_char_10a',
|
||
|
[11] = 'vw_prop_vw_club_char_j_a',
|
||
|
[12] = 'vw_prop_vw_club_char_q_a',
|
||
|
[13] = 'vw_prop_vw_club_char_k_a',
|
||
|
[14] = 'vw_prop_vw_dia_char_a_a',
|
||
|
[15] = 'vw_prop_vw_dia_char_02a',
|
||
|
[16] = 'vw_prop_vw_dia_char_03a',
|
||
|
[17] = 'vw_prop_vw_dia_char_04a',
|
||
|
[18] = 'vw_prop_vw_dia_char_05a',
|
||
|
[19] = 'vw_prop_vw_dia_char_06a',
|
||
|
[20] = 'vw_prop_vw_dia_char_07a',
|
||
|
[21] = 'vw_prop_vw_dia_char_08a',
|
||
|
[22] = 'vw_prop_vw_dia_char_09a',
|
||
|
[23] = 'vw_prop_vw_dia_char_10a',
|
||
|
[24] = 'vw_prop_vw_dia_char_j_a',
|
||
|
[25] = 'vw_prop_vw_dia_char_q_a',
|
||
|
[26] = 'vw_prop_vw_dia_char_k_a',
|
||
|
[27] = 'vw_prop_vw_hrt_char_a_a',
|
||
|
[28] = 'vw_prop_vw_hrt_char_02a',
|
||
|
[29] = 'vw_prop_vw_hrt_char_03a',
|
||
|
[30] = 'vw_prop_vw_hrt_char_04a',
|
||
|
[31] = 'vw_prop_vw_hrt_char_05a',
|
||
|
[32] = 'vw_prop_vw_hrt_char_06a',
|
||
|
[33] = 'vw_prop_vw_hrt_char_07a',
|
||
|
[34] = 'vw_prop_vw_hrt_char_08a',
|
||
|
[35] = 'vw_prop_vw_hrt_char_09a',
|
||
|
[36] = 'vw_prop_vw_hrt_char_10a',
|
||
|
[37] = 'vw_prop_vw_hrt_char_j_a',
|
||
|
[38] = 'vw_prop_vw_hrt_char_q_a',
|
||
|
[39] = 'vw_prop_vw_hrt_char_k_a',
|
||
|
[40] = 'vw_prop_vw_spd_char_a_a',
|
||
|
[41] = 'vw_prop_vw_spd_char_02a',
|
||
|
[42] = 'vw_prop_vw_spd_char_03a',
|
||
|
[43] = 'vw_prop_vw_spd_char_04a',
|
||
|
[44] = 'vw_prop_vw_spd_char_05a',
|
||
|
[45] = 'vw_prop_vw_spd_char_06a',
|
||
|
[46] = 'vw_prop_vw_spd_char_07a',
|
||
|
[47] = 'vw_prop_vw_spd_char_08a',
|
||
|
[48] = 'vw_prop_vw_spd_char_09a',
|
||
|
[49] = 'vw_prop_vw_spd_char_10a',
|
||
|
[50] = 'vw_prop_vw_spd_char_j_a',
|
||
|
[51] = 'vw_prop_vw_spd_char_q_a',
|
||
|
[52] = 'vw_prop_vw_spd_char_k_a'
|
||
|
}
|
||
|
|
||
|
Config.getHandAllValues = function(handTable, bool_1, bool_2)
|
||
|
if type(handTable) == 'table' then
|
||
|
local c1, c2, c3 = Config.GetCardValue(handTable[1]), Config.GetCardValue(handTable[2]), Config.GetCardValue(handTable[3])
|
||
|
|
||
|
local handValue = 0
|
||
|
|
||
|
-- FIRST CHECK
|
||
|
if (c1 ~= c2 and c1 ~= c3) and c2 ~= c3 then
|
||
|
local Flush = false
|
||
|
|
||
|
handValue = c1 + c2 + c3
|
||
|
|
||
|
if handValue == 19 then
|
||
|
if (c1 == 14 or c1 == 2 or c1 == 3) and (c2 == 14 or c2 == 2 or c2 == 3) and (c3 == 14 or c3 == 2 or c3 == 3) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 9 then
|
||
|
if (c1 == 2 or c1 == 3 or c1 == 4) and (c2 == 2 or c2 == 3 or c2 == 4) and (c3 == 2 or c3 == 3 or c3 == 4) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 12 then
|
||
|
if (c1 == 3 or c1 == 4 or c1 == 5) and (c2 == 3 or c2 == 4 or c2 == 5) and (c3 == 3 or c3 == 4 or c3 == 5) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 15 then
|
||
|
if (c1 == 4 or c1 == 5 or c1 == 6) and (c2 == 4 or c2 == 5 or c2 == 6) and (c3 == 4 or c3 == 5 or c3 == 6) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 18 then
|
||
|
if (c1 == 5 or c1 == 6 or c1 == 7) and (c2 == 5 or c2 == 6 or c2 == 7) and (c3 == 5 or c3 == 6 or c3 == 7) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 21 then
|
||
|
if (c1 == 6 or c1 == 7 or c1 == 8) and (c2 == 6 or c2 == 7 or c2 == 8) and (c3 == 6 or c3 == 7 or c3 == 8) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 24 then
|
||
|
if (c1 == 7 or c1 == 8 or c1 == 9) and (c2 == 7 or c2 == 8 or c2 == 9) and (c3 == 7 or c3 == 8 or c3 == 9) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 27 then
|
||
|
if (c1 == 8 or c1 == 9 or c1 == 10) and (c2 == 8 or c2 == 9 or c2 == 10) and (c3 == 8 or c3 == 9 or c3 == 10) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 30 then
|
||
|
if (c1 == 9 or c1 == 10 or c1 == 11) and (c2 == 9 or c2 == 10 or c2 == 11) and (c3 == 9 or c3 == 10 or c3 == 11) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 33 then
|
||
|
if (c1 == 10 or c1 == 11 or c1 == 12) and (c2 == 10 or c2 == 11 or c2 == 12) and (c3 == 10 or c3 == 11 or c3 == 12) then
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 36 then
|
||
|
if (c1 == 11 or c1 == 12 or c1 == 13) and (c2 == 11 or c2 == 12 or c3 == 13) and (c3 == 11 or c3 == 12 or c3 == 13) then
|
||
|
--something true
|
||
|
Flush = true
|
||
|
end
|
||
|
elseif handValue == 39 then
|
||
|
if (c1 == 12 or c1 == 13 or c1 == 14) and (c2 == 12 or c2 == 13 or c2 == 14) and (c3 == 12 or c3 == 13 or c3 == 14) then
|
||
|
--something true
|
||
|
Flush = true
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if Flush then
|
||
|
if handValue == 19 then
|
||
|
handValue = 6
|
||
|
end
|
||
|
|
||
|
if Config.GetCardType(handTable[1]) == Config.GetCardType(handTable[2]) and Config.GetCardType(handTable[1]) == Config.GetCardType(handTable[3]) then
|
||
|
return handValue + 500
|
||
|
end
|
||
|
|
||
|
return handValue + 300
|
||
|
end
|
||
|
end
|
||
|
|
||
|
handValue = 0
|
||
|
|
||
|
-- SECOND CHECK
|
||
|
if (c1 == c2) and c1 ~= c3 then -- pairs
|
||
|
if not bool_1 and not bool_2 then
|
||
|
return (c1 + c2) + 100
|
||
|
else
|
||
|
return c3
|
||
|
end
|
||
|
elseif (c2 == c3) and c2 ~= c1 then -- pairs
|
||
|
if not bool_1 and not bool_2 then
|
||
|
return (c2 + c3) + 100
|
||
|
else
|
||
|
return c1
|
||
|
end
|
||
|
elseif (c3 == c1) and c3 ~= c2 then -- pairs
|
||
|
if not bool_1 and not bool_2 then
|
||
|
return (c1 + c3) + 100
|
||
|
else
|
||
|
return c2
|
||
|
end
|
||
|
elseif c1 == c2 and c1 == c3 then -- 3 of a kind
|
||
|
return c1 + c2 + c3 + 400
|
||
|
elseif Config.GetCardType(handTable[1]) == Config.GetCardType(handTable[2]) and Config.GetCardType(handTable[1]) == Config.GetCardType(handTable[3]) then
|
||
|
handValue = 200
|
||
|
end
|
||
|
|
||
|
-- third check if it runs here
|
||
|
|
||
|
if c1 > c2 and c1 > c3 then
|
||
|
if bool_1 then
|
||
|
if c2 > c3 then
|
||
|
return handValue + c2
|
||
|
else
|
||
|
return handValue + c3
|
||
|
end
|
||
|
elseif bool_2 then
|
||
|
if c2 > c3 then
|
||
|
return handValue + c3
|
||
|
else
|
||
|
return handValue + c2
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return handValue + c1
|
||
|
elseif c2 > c1 and c2 > c3 then
|
||
|
if bool_1 then
|
||
|
if c1 > c3 then
|
||
|
return handValue + c1
|
||
|
else
|
||
|
return handValue + c3
|
||
|
end
|
||
|
elseif bool_2 then
|
||
|
if c1 > c3 then
|
||
|
return handValue + c3
|
||
|
else
|
||
|
return handValue + c1
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return handValue + c2
|
||
|
elseif c3 > c1 and c3 > c2 then
|
||
|
if bool_1 then
|
||
|
if c1 > c2 then
|
||
|
return handValue + c1
|
||
|
else
|
||
|
return handValue + c2
|
||
|
end
|
||
|
elseif bool_2 then
|
||
|
if c1 > c2 then
|
||
|
return handValue + c2
|
||
|
else
|
||
|
return handValue + c1
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return handValue + c3
|
||
|
end
|
||
|
|
||
|
return handValue
|
||
|
else
|
||
|
return 0
|
||
|
end
|
||
|
end
|
||
|
|
||
|
Config.GetPairMultiplier = function(handValue)
|
||
|
if handValue > 500 then
|
||
|
return 40
|
||
|
elseif handValue > 400 then
|
||
|
return 30
|
||
|
elseif handValue > 300 then
|
||
|
return 6
|
||
|
elseif handValue > 200 then
|
||
|
return 4
|
||
|
elseif handValue > 100 then
|
||
|
return 1
|
||
|
end
|
||
|
|
||
|
return 0
|
||
|
end
|
||
|
|
||
|
Config.GetAnteMultiplier = function(handValue)
|
||
|
if handValue > 500 then
|
||
|
return 5
|
||
|
elseif handValue > 400 then
|
||
|
return 4
|
||
|
elseif handValue > 300 then
|
||
|
return 1
|
||
|
end
|
||
|
|
||
|
return 0
|
||
|
end
|
||
|
|
||
|
Config.formatHandValue = function(handValue)
|
||
|
if handValue > 500 then
|
||
|
return 'Straight flush'
|
||
|
elseif handValue > 400 then
|
||
|
return '3 of a kind'
|
||
|
elseif handValue > 300 then
|
||
|
return 'Straight'
|
||
|
elseif handValue > 200 then
|
||
|
return 'Flush'
|
||
|
elseif handValue > 100 then
|
||
|
if handValue == 128 then
|
||
|
return 'Pair Ace'
|
||
|
elseif handValue == 104 then
|
||
|
return 'Pair 2'
|
||
|
elseif handValue == 106 then
|
||
|
return 'Pair 3'
|
||
|
elseif handValue == 108 then
|
||
|
return 'Pair 4'
|
||
|
elseif handValue == 110 then
|
||
|
return 'Pair 5'
|
||
|
elseif handValue == 112 then
|
||
|
return 'Pair 6'
|
||
|
elseif handValue == 114 then
|
||
|
return 'Pair 7'
|
||
|
elseif handValue == 116 then
|
||
|
return 'Pair 8'
|
||
|
elseif handValue == 118 then
|
||
|
return 'Pair 9'
|
||
|
elseif handValue == 120 then
|
||
|
return 'Pair 10'
|
||
|
elseif handValue == 122 then
|
||
|
return 'Pair Jack'
|
||
|
elseif handValue == 124 then
|
||
|
return 'Pair Queen'
|
||
|
elseif handValue == 126 then
|
||
|
return 'Pair King'
|
||
|
end
|
||
|
elseif handValue == 5 then
|
||
|
return 'High Card 5'
|
||
|
elseif handValue == 6 then
|
||
|
return 'High Card 6'
|
||
|
elseif handValue == 7 then
|
||
|
return 'High Card 7'
|
||
|
elseif handValue == 8 then
|
||
|
return 'High Card 8'
|
||
|
elseif handValue == 9 then
|
||
|
return 'High Card 9'
|
||
|
elseif handValue == 10 then
|
||
|
return 'High Card 10'
|
||
|
elseif handValue == 11 then
|
||
|
return 'High Card Jack'
|
||
|
elseif handValue == 12 then
|
||
|
return 'High Card Queen'
|
||
|
elseif handValue == 13 then
|
||
|
return 'High Card King'
|
||
|
else
|
||
|
return 'High Card Ace'
|
||
|
end
|
||
|
|
||
|
return ''
|
||
|
end
|
||
|
|
||
|
Config.canDealerPlay = function(handValue)
|
||
|
if handValue >= 12 then
|
||
|
return true
|
||
|
else
|
||
|
return false
|
||
|
end
|
||
|
end
|
||
|
|
||
|
Config.DebugMsg = function(msg)
|
||
|
if Config.Debug then
|
||
|
print(msg)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
Locales = {}
|
||
|
function _(str, ...) -- Translate string
|
||
|
|
||
|
if Locales[Config.Locale] ~= nil then
|
||
|
|
||
|
if Locales[Config.Locale][str] ~= nil then
|
||
|
return string.format(Locales[Config.Locale][str], ...)
|
||
|
else
|
||
|
return 'Translation [' .. Config.Locale .. '][' .. str .. '] does not exist'
|
||
|
end
|
||
|
|
||
|
else
|
||
|
return 'Locale [' .. Config.Locale .. '] does not exist'
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
function _U(str, ...) -- Translate string first char uppercase
|
||
|
return tostring(_(str, ...):gsub("^%l", string.upper))
|
||
|
end
|