Funções e Validações em Client do Trunkin
Nesta seção, vamos detalhar as principais funções que compõem a lógica do Trunkin. Essas funções são responsáveis por validar as condições para que o jogador possa acessar ou sair do porta-malas, bloquear controles durante o uso e gerenciar permissões com base no estado do veículo e do jogador.
📁 dk_trunkin > config > client > functions.lua
1. Verificação do Estado do Veículo
isUnlocked
Verifica se o veículo está destrancado.
Retorno: true se o veículo estiver destrancado, false caso contrário.
dk_trunkin/config/client/functions.lua
---@param vehEntity number
---@return boolean
local function isUnlocked(vehEntity)
return not (GetVehicleDoorLockStatus(vehEntity) ~= 1)
end
isVehicleAllowed
Filtra o veículo com base no modelo e na classe.
- Se o modelo estiver na lista de
disabledModelTrunk, o acesso é negado.
- Se a classe do veículo estiver bloqueada em
blockedClasses, o acesso também é negado.
dk_trunkin/config/client/functions.lua
---@param vehEntity number
---@return boolean
local function isVehicleAllowed(vehEntity)
if Config.disabledModelTrunk[GetEntityModel(vehEntity)] then
return false
end
if Config.blockedClasses[GetVehicleClass(vehEntity)] then
return false
end
return true
end
2. Bloqueio de Controles
A função blockControls desativa uma série de controles enquanto o jogador está dentro do porta-malas. Isso impede ações indesejadas que poderiam interferir na experiência ou causar conflitos com outras funcionalidades.
dk_trunkin/config/client/functions.lua
function Config.functions.blockControls()
DisableControlAction(1,73,true)
DisableControlAction(1,23,true)
DisableControlAction(1,29,true)
DisableControlAction(1,47,true)
DisableControlAction(1,187,true)
DisableControlAction(1,189,true)
DisableControlAction(1,190,true)
DisableControlAction(1,188,true)
DisableControlAction(1,311,true)
DisableControlAction(1,245,true)
DisableControlAction(1,257,true)
DisableControlAction(1,167,true)
DisableControlAction(1,140,true)
DisableControlAction(1,141,true)
DisableControlAction(1,142,true)
DisableControlAction(1,137,true)
DisableControlAction(1,37,true)
end
3. Gerenciamento de Permissões para Acesso
toggleTrunkPermission
Verifica se o jogador pode entrar ou sair do porta-malas, levando em consideração diversos fatores:
- Estado do jogador (morto ou no modo sequestro).
- Existência do porta-malas (verificando os ossos “boot” e “bonnet” ou a presença de um offset customizado).
- Estado do veículo (motor, integridade e se está na água).
- Se o veículo está destrancado e permitido pela filtragem.
Se alguma condição falhar, uma notificação é exibida, e a função retorna false.
dk_trunkin/config/client/functions.lua
---@param entering boolean
---@param vehEntity number
---@param kidnapped boolean
---@return boolean
function Config.functions.toggleTrunkPermission(entering, vehEntity, kidnapped)
local ped = PlayerPedId()
if not kidnapped and GetEntityHealth(ped) <= 101 then
DkNotify("red", Locale("disabled_dead"))
return false
end
if IsPedInAnyVehicle(ped) or GetVehiclePedIsEntering(ped) ~= 0 then
DkNotify("red", Locale("disabled_inside_veh"))
return false
end
if entering then
local boot = GetEntityBoneIndexByName(vehEntity,"boot")
local bonnet = GetEntityBoneIndexByName(vehEntity,"bonnet")
if boot == -1 and bonnet == -1 and not Config.customOffsets[GetEntityModel(vehEntity)] then
DkNotify("red", Locale("veh_has_no_trunk"))
return false
end
if GetVehicleEngineHealth(vehEntity) <= 0 or IsEntityInWater(vehEntity) then
DkNotify("red", Locale("veh_destroyed"))
return false
end
if not isUnlocked(vehEntity) then
DkNotify("red", Locale("locked_veh"))
return false
end
if not isVehicleAllowed(vehEntity) then
DkNotify("red", Locale("veh_blocked"))
return false
end
end
return true
end
4. Ações ao Entrar e Sair do Porta-malas
As funções a seguir são acionadas quando o jogador entra ou sai do porta-malas.
Você pode personalizar essas funções para adicionar estados ou executar ações adicionais (como invisibilidade ou alteração de comandos).
onEnterTrunk
Executada ao entrar no porta-malas.
Exemplo: Marcar o estado do jogador como “dentro do porta-malas”.
dk_trunkin/config/client/functions.lua
---@param vehEntity number
---@param kidnapped boolean
function Config.functions.onEnterTrunk(vehEntity, kidnapped)
-- Normalmente utilizadas em creative
LocalPlayer["state"]["Invisible"] = true
LocalPlayer["state"]["Commands"] = true
-- LocalPlayer["state"]["inTrunk"] = true
end
onLeaveTrunk
Executada ao sair do porta-malas.
Exemplo: Restaurar o estado do jogador para “fora do porta-malas”.
dk_trunkin/config/client/functions.lua
---@param vehEntity number
---@param kidnapped boolean
function Config.functions.onLeaveTrunk(vehEntity, kidnapped)
-- Normalmente utilizadas em creative
LocalPlayer["state"]["Invisible"] = false
LocalPlayer["state"]["Commands"] = false
-- LocalPlayer["state"]["inTrunk"] = false
end
🔔 Resumo:
- Validações: As funções
isUnlocked e isVehicleAllowed garantem que o veículo esteja em condições de uso.
- Controle de Ação:
blockControls impede que o jogador realize ações indesejadas enquanto está no porta-malas.
- Permissões:
toggleTrunkPermission checa diversas condições para permitir o acesso seguro e adequado.
- Estados do Jogador:
onEnterTrunk e onLeaveTrunk permitem a customização dos estados do jogador ao interagir com o porta-malas.
Essas funções são fundamentais para o funcionamento do Trunkin e podem ser adaptadas conforme as necessidades do seu servidor. Personalize-as para aprimorar a experiência do jogador e garantir um controle mais refinado durante a interação com o porta-malas.