Armi Melee (Spade)

INFO

Le armi melee in GTA V funzionano in modo diverso dalle armi da fuoco: niente proiettili, niente munizioni, niente ricarica. Il danno viene applicato al contatto con l’animazione di attacco.

ObiettivoDettagli
Cosa impareraiCreare spade, mazze e altre armi melee custom per FiveM: modellazione, metadati, animazioni e integrazione ESX
PrerequisitiIntroduzione Armi completato, basi di Blender e meta files

Differenze tra Armi Melee e da Fuoco

AspettoArma da FuocoArma Melee
ProiettileSpawna un proiettile con velocità e trajectoryNessuno — danno a contatto diretto
MunizioniUsa AmmoType (AMMO_PISTOL, ecc.)AMMO_MELEE o nessuna
RicaricaAnimazione di ricarica + clipNessuna
HashWEAPON_PISTOL, WEAPON_CARBINERIFLEWEAPON_KNIFE, WEAPON_BAT, WEAPON_SWORD
DistanzaRanged (metri)Ravvicinato (2-3 metri)
Modello2 modelli (FP + TP)1 modello (solo TP)
AnimazioniFire, Reload, Idle, WalkSwing, Stab, Idle

Hash e Tipi di Armi Melee

GTA V ha hash nativi per armi melee. Puoi crearne di nuove che ereditano comportamenti melee esistenti:

HashArmaAnimazioniDanno Base
WEAPON_KNIFEColtelloPugnalata + taglio20
WEAPON_BATMazza da baseballSwing orizzontale35
WEAPON_HAMMERMartelloSwing dall’alto30
WEAPON_CROWBARPiede di porcoSwing30
WEAPON_GOLFCLUBMazza da golfSwing25
WEAPON_SWORDKatanaTaglio45
WEAPON_MACHETEMacheteTaglio40
WEAPON_BATTLEAXEAscia da battagliaSwing potente50
WEAPON_WRENCHChiave ingleseSwing25
WEAPON_POOLCUEStecca da biliardoSpinta20

TIP

Per le spade, il miglior hash di partenza è WEAPON_SWORD (katana) o WEAPON_MACHETE. Hanno già animazioni di taglio che funzionano bene con la maggior parte delle spade custom.


Weaponlayouts.meta per Armi Melee

WARNING

Le armi melee NON usano BulletSpeed, InitialSpread, Recoil o AmmoType. I parametri chiave sono Damage, MeleeHitRange e MeleeDamageType.

<?xml version="1.0" encoding="UTF-8"?>
<CWeaponLayouts>
    <Layout>
        <!-- NOME INTERNO -->
        <Name>w_longsword</Name>
        
        <!-- NOME VISIBILE -->
        <DisplayName>WT_LONGSWORD</DisplayName>
        
        <!-- MODELLO (solo TP — le melee non hanno FP separato) -->
        <Model>w_longsword</Model>
        
        <!-- CATEGORIA: SLOT_MELEE -->
        <Slot>SLOT_MELEE</Slot>
        
        <!-- DANNO BASE -->
        <Damage>45.0</Damage>
        
        <!-- DISTANZA DI CONTATTO (metri) -->
        <MeleeHitRange>2.5</MeleeHitRange>
        
        <!-- TIPO DI DANNO -->
        <MeleeDamageType>MELEE_DAMAGE_CUT</MeleeDamageType>
        
        <!-- FORZA DEL COLPO (spinge il ped colpito) -->
        <MeleePhysicsForce>50.0</MeleePhysicsForce>
        
        <!-- VELOCITÀ DELL'ATTACCO -->
        <MeleeSwingSpeed>2.0</MeleeSwingSpeed>
        
        <!-- NUMERO DI COLPI PER DISTRUGGERE OGGETTI -->
        <MeleeWeaponHitDamageToWeapon>0.0</MeleeWeaponHitDamageToWeapon>
    </Layout>
</CWeaponLayouts>

Parametri Specifici Melee

ParametroDescrizioneValore Tipico
MeleeHitRangeDistanza massima del colpo1.5 (pugnale) — 3.5 (spada lunga)
MeleeDamageTypeTipo di danno (vedi sotto)MELEE_DAMAGE_CUT
MeleePhysicsForceForza fisica dell’impatto30-80
MeleeSwingSpeedVelocità dell’animazione di attacco0.8 (lento) — 3.0 (veloce)
MeleeWeaponHitDamageToWeaponDanno subito dall’arma quando colpisce0.0 (indistruttibile)

Tipi di Danno Melee

TipoEffettoUsato da
MELEE_DAMAGE_CUTTaglio/sanguinamentoSpade, coltelli, machete
MELEE_DAMAGE_BLUNTContundente/ammaccaturaMazze, martelli, wrench
MELEE_DAMAGE_PIERCEPerforazione/penetrazioneStiletto, baionetta
MELEE_DAMAGE_BULLETDanno da proiettile (NON usare per melee)Solo armi da fuoco

Animazioni per Armi Melee

INFO

Le melee hanno un set di animazioni diverso dalle armi da fuoco. Non c’è ricarica o sparo — ci sono swing, stab e combo.

WeaponAnimations.meta per Melee

<?xml version="1.0" encoding="UTF-8"?>
<CWeaponAnimations>
    <Item>
        <Name>w_longsword</Name>
        
        <!-- Animation group base (importante: usare ANIM_GROUP_MELLE_*) -->
        <AnimationSet>ANIM_GROUP_SWORD</AnimationSet>
        
        <!-- Animazioni specifiche -->
        <MeleeAnim>WEAPON_SWORD_ATTACK</MeleeAnim>
        <MeleeAnim2>WEAPON_SWORD_ATTACK_2</MeleeAnim2>
        <MeleeAnim3>WEAPON_SWORD_ATTACK_3</MeleeAnim3>
        
        <!-- Animazioni movimento -->
        <WalkAnim>WEAPON_SWORD_WALK</WalkAnim>
        <SprintAnim>WEAPON_SWORD_SPRINT</SprintAnim>
        <IdleAnim>WEAPON_SWORD_IDLE</IdleAnim>
    </Item>
</CWeaponAnimations>

Animation Group per Melee

Animation GroupAdatto per
ANIM_GROUP_KNIFEColtelli, pugnali, stiletti
ANIM_GROUP_SWORDSpade, katane, machete
ANIM_GROUP_BATMazze, bastoni, mazze da baseball
ANIM_GROUP_HAMMERMartelli, asce
ANIM_GROUP_BOTTLEBottiglie rotte

TIP

Per una spada lunga, ANIM_GROUP_SWORD è la scelta migliore. Ha 3 varianti di attacco che puoi referenziare con MeleeAnim, MeleeAnim2, MeleeAnim3.

Tabella Animazioni Melee

AnimazioneDescrizione
MeleeAnimAttacco primario (colpo base)
MeleeAnim2Attacco secondario (combo)
MeleeAnim3Attacco terziario (combo potente)
WalkAnimCamminata con arma in mano
SprintAnimCorsa con arma in mano
IdleAnimPosizione d’attesa

Modellazione per Armi Melee

WARNING

A differenza delle armi da fuoco, le melee hanno UN SOLO modello (visto in terza persona). Non serve un modello FP separato perché il giocatore vede l’arma in mano dal basso.

Regole di Modellazione

  1. Skeleton: L’arma si attacca all’osso SKEL_R_Hand (mano destra)
  2. Posizione: L’elsa deve essere nel palmo, la lama protesa in avanti
  3. Poligoni: 2.000-15.000 vertici (spade semplici stanno in 5.000)
  4. LOD: Crea LOD models progressivi (100%, 50%, 10%, 1%)
  5. UV: Una texture 1024x1024 è sufficiente per la maggior parte delle spade

Blender — Setup Rapido

1. Modella la spada centrata sull'origine
2. Ruota e posiziona: impugnatura nel palmo, lama in avanti
3. Crea UV unwrap (Smart UV Project con Angle Limit 66°)
4. Parent Set: Arma → Armature → SKEL_R_Hand (con Keep Transform)
5. Esporta come .ydr (Drawable) — NON .ydr FP

TIP

Per le melee, puoi saltare il modello FP: GTA V usa il modello TP anche in prima persona per le armi melee. È un risparmio significativo di lavoro.


Texture e Materiali

MaterialeProprietàConsiglio
LamaAcciaio/metallo lucidoSpecular alta (bianco), riflessione
ElsaLegno/pelleSpecular media (grigio 128), opaca
GuardiaOttone/ferroSpecular media-alta, dettagli dorati
Gemme (opzionale)Rubino/zaffiroSpecular alta, emissivo leggero

INFO

Usa una texture sheet 1024x1024 con canale alpha per dettagli trasparenti. Le spade in GTA V beneficiano di un buon specular map per il riflesso della lama.


fxmanifest per Arma Melee

fx_version 'cerulean'
game 'gta5'
 
author 'TuoNome'
description 'Arma Melee Custom - Longsword'
version '1.0.0'
 
files {
    'stream/*.meta',
}
 
data_file 'WEAPON_INFO_FILE' 'stream/*.weaponlayouts.meta'
data_file 'WEAPON_ANIMATIONS_FILE' 'stream/*.weaponanimations.meta'
 
client_script 'client.lua'

NOTE

Per le melee NON servono WEAPON_METADATA_FILE (components) né WEAPON_PICKUP_FILE (pickup) a meno che tu non voglia renderle raccoglibili da terra.

Struttura Risorsa

weapon_longsword/
├── fxmanifest.lua
├── client.lua
└── stream/
    ├── w_longsword.ydr            ← Modello TP
    ├── w_longsword.ytd            ← Texture
    ├── w_longsword.weaponlayouts.meta
    └── w_longsword.weaponanimations.meta

Client Lua

-- client.lua
Citizen.CreateThread(function()
    AddTextEntry('WT_LONGSWORD', 'Longsword')
end)
 
RegisterCommand('givelongsword', function()
    local playerPed = PlayerPedId()
    GiveWeaponToPed(playerPed, GetHashKey('w_longsword'), 1, false, false)
end, false)

Integrazione con ESX + ox_inventory

Registrazione Arma Melee in ox_inventory

-- ox_inventory/data/items.lua
return {
    ['WEAPON_LONGSWORD'] = {
        label = 'Longsword',
        weight = 1500,
        stack = false,
        close = true,
        description = 'Una spada lunga forgiata a mano',
        client = {
            weapon = 'WEAPON_LONGSWORD',
            component = {},  -- Le melee non hanno componenti
        },
        -- Categoria melee separata dalle armi da fuoco
        category = 'weapon',
        buttons = {
            {
                label = 'Brandisci',
                action = function(slot)
                    TriggerEvent('ox_inventory:weapon', slot)
                end
            }
        }
    },
}

Negozio Armi Melee

-- ox_inventory/data/shops.lua
return {
    {
        name = 'melee_shop',
        label = 'Armaiolo Melee',
        location = vector3(480.0, -1000.0, 25.0),  -- Zona Commerciale
        blip = {
            id = 110, color = 3, scale = 0.7  -- BLIP arma, colore verde
        },
        inventory = {
            { name = 'WEAPON_LONGSWORD', price = 3000 },
            { name = 'WEAPON_BAT', price = 500 },
            { name = 'WEAPON_HAMMER', price = 800 },
        }
    }
}

Dare Arma Melee con ESX

-- server.lua
RegisterNetEvent('myresource:giveMelee')
AddEventHandler('myresource:giveMelee', function()
    local xPlayer = ESX.GetPlayerFromId(source)
    -- Le melee non usano munizioni (ammo = 1 è placeholder)
    xPlayer.addWeapon('WEAPON_LONGSWORD', 1)
end)

Blacklist Morte (opzionale)

-- ox_inventory/config.lua
-- Impedisci la perdita di armi melee rare
local meleeBlacklist = {
    'WEAPON_LONGSWORD',
    'WEAPON_BATTLEAXE_CUSTOM',
}
 
AddEventHandler('ox_inventory:removeWeapon', function(playerId, weaponName)
    for _, whitelisted in ipairs(meleeBlacklist) do
        if weaponName == whitelisted then
            return false
        end
    end
end)

Esempi di Armi Melee Custom

Spada Lunga (Longsword)

ParametroValore
HashWEAPON_LONGSWORD
Animation GroupANIM_GROUP_SWORD
Danno50
Hit Range3.0
Swing Speed1.8
Damage TypeMELEE_DAMAGE_CUT

Ascia da Battaglia (Battleaxe)

ParametroValore
HashWEAPON_BATTLEAXE
Animation GroupANIM_GROUP_HAMMER
Danno60
Hit Range2.0
Swing Speed1.2
Damage TypeMELEE_DAMAGE_CUT

Mazza Chiodata (Spiked Club)

ParametroValore
HashWEAPON_BAT
Animation GroupANIM_GROUP_BAT
Danno40
Hit Range2.2
Swing Speed2.5
Damage TypeMELEE_DAMAGE_BLUNT

TIP

Prossimo passo: Rivedi il Modulo Armi Completo per confrontare le differenze con le armi da fuoco.


Torna alla: Indice Generale