Scripts de pesca y caza para FiveM: los mejores recursos
Elige los mejores scripts de pesca y caza para tu servidor FiveM. Compara funciones y compatibilidad con frameworks, y crea una economía al aire libre dinámica.
Agency Scripts
Fundador y desarrollador principal en Agency Scripts
Mecánicas básicas de pesca
Un sistema de pesca ofrece una de las actividades secundarias más relajantes y gratificantes en un servidor de roleplay. El ciclo principal consiste en equipar una caña de pescar, acercarse a una masa de agua válida, lanzar el sedal, esperar a que pique un pez y completar un minijuego de captura. Empieza por definir zonas de pesca como áreas poligonales o círculos basados en radios que cubran lagos, ríos, la costa oceánica y los muelles. Cada zona debe tener su propia tabla de población de peces, con especies que correspondan lógicamente a ese entorno: especies de agua dulce como la lubina y la trucha en los lagos, especies de agua salada como el atún y el tiburón en alta mar, y peces propios de los ríos como el salmón cerca de aguas corrientes. Cuando el jugador lance el sedal, inicia un temporizador aleatorio entre un tiempo de espera mínimo y máximo, influido por el cebo utilizado, la hora del día, las condiciones meteorológicas y el nivel de habilidad de pesca del jugador. Una mayor habilidad reduce el tiempo de espera y aumenta la probabilidad de enganchar especies raras. La animación de lanzamiento debe usar TaskStartScenarioInPlace un escenario de pesca para que el personaje del jugador sostenga visualmente una caña y se coloque junto a la orilla.
El minijuego de captura
El minijuego es lo que diferencia un sistema de pesca atractivo de un script AFK aburrido. Diseña un minijuego basado en habilidad que aparezca como una superposición NUI cuando pique un pez. Una opción popular es la mecánica de la barra móvil, en la que un marcador oscila de un lado a otro por un indicador y el jugador debe pulsar una tecla cuando el marcador esté dentro de una zona objetivo resaltada. El tamaño de la zona objetivo depende del nivel de dificultad del pez: las especies comunes ofrecen un margen amplio, mientras que los peces legendarios requieren una precisión milimétrica. Añade varias rondas a un mismo intento de captura: cada pulsación correcta acerca el pez, mientras que un fallo le permite alejarse. Implementa un medidor de tensión que aumenta cuando el jugador recoge el sedal y disminuye cuando lo deja descansar, y que haga que el sedal se rompa si la tensión supera el límite máximo de la caña. Los distintos niveles de caña deben tener límites de tensión más altos, para que los jugadores tengan un motivo para mejorar su equipo a medida que avanzan en el árbol de habilidades de pesca.
-- Fish loot table configuration
Config.FishingZones = {
['alamo_sea'] = {
label = 'Alamo Sea',
center = vector3(482.12, 3614.89, 33.17),
radius = 200.0,
fishTable = {
{ item = 'fish_bass', label = 'Largemouth Bass', weight = {1.5, 4.2}, chance = 35, difficulty = 1, price = 45 },
{ item = 'fish_catfish', label = 'Channel Catfish', weight = {2.0, 8.5}, chance = 25, difficulty = 2, price = 65 },
{ item = 'fish_bluegill', label = 'Bluegill', weight = {0.3, 1.2}, chance = 30, difficulty = 1, price = 20 },
{ item = 'fish_golden', label = 'Golden Trout', weight = {1.0, 3.0}, chance = 8, difficulty = 4, price = 250 },
{ item = 'item_boot', label = 'Old Boot', weight = {0.5, 0.5}, chance = 2, difficulty = 1, price = 0 },
},
requiredBait = { 'bait_worm', 'bait_minnow', 'bait_lure' },
},
}
Zonas de caza y aparición de animales
La caza requiere un enfoque más dinámico que la pesca, porque los animales son entidades visibles y móviles a las que los jugadores deben seguir, acechar y disparar. Define zonas de caza en áreas silvestres como los bosques del condado de Blaine, las laderas del monte Chiliad y las regiones desérticas alrededor de Sandy Shores. Dentro de cada zona, genera peds animales usando los modelos nativos de animales de GTA a intervalos controlados. Usa CreatePed con hashes de modelos de animales y asígnales tareas de deambular usando TaskWanderStandard para que se muevan de forma natural dentro de los límites de la zona. Controla cuidadosamente la densidad de aparición para evitar problemas de rendimiento: limita cada zona a 5-8 animales activos a la vez por jugador y genera animales solo cuando un jugador con una licencia de caza o un arma esté a una distancia razonable de la zona. Elimina los animales correctamente cuando no haya cazadores cerca para liberar espacios de entidades. Agrupa animales en manadas para especies como los ciervos, donde dispararle a uno hace que los demás huyan usando TaskSmartFleePed, creando una experiencia de caza realista que recompensa el acecho paciente en lugar de correr y disparar.
Tablas de botín y despiece
Cuando un jugador mata a un animal, no debería recibir objetos instantáneamente. Implementa una mecánica de despiece en la que el jugador se arrodille junto al cadáver y realice una animación de carnicería que dure varios segundos, durante los cuales será vulnerable. El botín dependerá de la especie del animal, el arma utilizada y el lugar del impacto. Un disparo limpio a la cabeza con un rifle produce más carne intacta y una piel en estado impecable, mientras que dispararle al animal con un arma automática daña la piel y destruye parte de la carne. Registra el lugar del impacto comparando la posición del daño mortal con las coordenadas del hueso de la cabeza del animal. Cada animal debería soltar una combinación de carne cruda, una piel o cuero y objetos secundarios como astas, plumas o grasa, según la especie. Usa los metadatos de los objetos para guardar la calidad de cada objeto obtenido, lo que afecta al precio de venta y a la calidad de los productos fabricados cuando los procesa un trabajador del cuero o un cocinero.
-- Server-side harvesting logic
RegisterNetEvent('hunting:harvest')
AddEventHandler('hunting:harvest', function(netId, weaponHash, boneHit)
local src = source
local entity = NetworkGetEntityFromNetworkId(netId)
if not DoesEntityExist(entity) then return end
local model = GetEntityModel(entity)
local animalData = Config.Animals[model]
if not animalData then return end
-- Determine quality based on weapon and hit location
local quality = 'poor'
if boneHit == 'head' then
if IsCleanWeapon(weaponHash) then
quality = 'pristine'
else
quality = 'good'
end
elseif IsCleanWeapon(weaponHash) then
quality = 'good'
end
local priceMultiplier = Config.QualityMultipliers[quality] -- pristine=1.5, good=1.0, poor=0.5
-- Give loot items
for _, loot in ipairs(animalData.lootTable) do
if math.random(100) <= loot.chance then
local count = math.random(loot.min, loot.max)
exports.ox_inventory:AddItem(src, loot.item, count, {
quality = quality,
animal = animalData.label,
weight = math.random(loot.weightMin * 10, loot.weightMax * 10) / 10,
})
end
end
-- Delete carcass after harvesting
DeleteEntity(entity)
TriggerClientEvent('hunting:harvested', src)
end)
Sistema de progresión de habilidades
Un sistema de progresión mantiene el interés a largo plazo por la pesca y la caza al recompensar a los jugadores dedicados con mejoras tangibles. Lleva un registro de niveles de habilidad separados para pesca y caza, y aumenta cada uno con las capturas o muertes exitosas. A medida que aumenta la habilidad de pesca, se reduce el tiempo de espera para que piquen, aparecen más peces raros en la tabla de botín, la zona objetivo del minijuego se ensancha ligeramente y el jugador desbloquea el acceso a lugares de pesca prémium, sujetos a requisitos mínimos de habilidad. En la caza, los niveles de habilidad más altos permiten al jugador ver huellas de animales como marcas sutiles en el suelo, aumentan el alcance de detección para avistarlos, reducen el radio de ruido al moverse entre la maleza y desbloquean la capacidad de usar reclamos y aromas que atraen especies específicas hasta la ubicación del cazador. Guarda los XP de habilidad en tu base de datos y calcula el nivel mediante una fórmula progresiva en la que cada nivel sucesivo requiera más XP que el anterior. Así evitarás que los jugadores alcancen el nivel máximo demasiado rápido y, a la vez, mantendrás un progreso constante que resulte gratificante en cada sesión de juego.
Equipo y mejoras
Los niveles de equipo dan a los jugadores objetivos a corto plazo y motivos concretos para gastar dentro de la economía de pesca y caza. Para la pesca, ofrece una progresión desde cañas básicas de madera que solo puedan capturar peces comunes, hasta cañas de fibra de vidrio con mejor control de la tensión y cañas de fibra de carbono que reduzcan la dificultad de captura y aumenten las probabilidades de encontrar peces raros. Combina las cañas con carretes que afecten a la rapidez con la que el jugador recoge el sedal durante el minijuego. Los tipos de cebo deben influir directamente en las especies de peces que se pueden capturar: lombrices para la pesca general en agua dulce, peces pequeños para especies depredadoras, señuelos especializados para especies raras y cebo prémium que duplique la frecuencia de picadas. Para la caza, ofrece ventajas específicas para cada arma: un arco compuesto es silencioso, pero requiere acercarse más; un rifle de cerrojo es ideal para abatir presas limpiamente a distancia; y una escopeta es eficaz contra las aves, pero daña las pieles de animales grandes. Añade accesorios de caza como prismáticos para aumentar el alcance de avistamiento, trajes ghillie que reduzcan el radio de detección del jugador por parte de los animales y un cuchillo de caza que acelere la animación de despiece. Vende todo el equipo a través de un NPC de una tienda de cebos cerca de los lugares de pesca y de un proveedor de equipo de caza en zonas rurales, creando puntos de encuentro naturales donde los aficionados a las actividades al aire libre puedan reunirse y compartir consejos.
Venta de capturas y economía al aire libre
Conecta la pesca y la caza con la economía general de tu servidor ofreciendo varios lugares donde vender los productos obtenidos. Un NPC del mercado de pescado debería comprar todo tipo de pescado a precios base, con tarifas prémium para los ejemplares raros y de gran tamaño. Un NPC carnicero compra carne cruda y pieles de animales. Además de las ventas a NPC, permite el intercambio entre jugadores, para que un pescador experto pueda abastecer de pescado fresco al dueño de un restaurante o un cazador pueda vender pieles impecables a un artesano del cuero, que las convierte en prendas o muebles. Implementa un sistema de demanda diaria en el que algunos tipos de pescado o carne valgan más en días determinados, animando a los jugadores a diversificar sus actividades en lugar de conseguir repetidamente las mismas especies rentables. Añade un panel de trofeos en los lugares de pesca y caza que muestre cada semana el pez más grande capturado y los animales más raros obtenidos, y recompensa a quienes tengan los récords con dinero extra o premios cosméticos exclusivos. Considera eventos de temporada, como torneos de pesca o competiciones de caza, que unan a la comunidad en torno a estas actividades al aire libre.
Optimización del rendimiento y la aparición de entidades
Los sistemas al aire libre que generan entidades requieren una optimización cuidadosa para evitar que el rendimiento del servidor se degrade. Para la aparición de animales, usa un sistema basado en la proximidad que solo cree peds animales cuando un cazador esté dentro de un rango configurable, normalmente de 150-200 metros. Implementa un límite global de entidades que establezca un máximo para el total de animales de caza en todo el servidor y distribuya ese límite entre las zonas activas según la cantidad de cazadores. Usa grupos de entidades que reutilicen los animales eliminados en lugar de crear otros nuevos, reduciendo la sobrecarga de las llamadas repetidas a CreatePed . Para la pesca, evita generar entidades de peces visibles por completo, ya que no aportan nada a la jugabilidad y ocupan espacios de entidades. En su lugar, usa efectos de partículas o animaciones sutiles en la superficie del agua para indicar que ha picado un pez. Guarda las configuraciones de las zonas en la memoria compartida en lugar de leerlas de la base de datos en cada interacción. Para ambos sistemas, agrupa las escrituras en la base de datos acumulando en memoria las ganancias de XP, las capturas y las muertes, y volcándolas a la base de datos cada 30-60 segundos en lugar de hacerlo en cada evento individual. Esto reduce drásticamente el volumen de consultas a la base de datos durante las horas punta, cuando muchos jugadores pescan o cazan simultáneamente.