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.
| Obiettivo | Dettagli |
|---|---|
| Cosa imparerai | Creare spade, mazze e altre armi melee custom per FiveM: modellazione, metadati, animazioni e integrazione ESX |
| Prerequisiti | Introduzione Armi completato, basi di Blender e meta files |
Differenze tra Armi Melee e da Fuoco
| Aspetto | Arma da Fuoco | Arma Melee |
|---|---|---|
| Proiettile | Spawna un proiettile con velocità e trajectory | Nessuno — danno a contatto diretto |
| Munizioni | Usa AmmoType (AMMO_PISTOL, ecc.) | AMMO_MELEE o nessuna |
| Ricarica | Animazione di ricarica + clip | Nessuna |
| Hash | WEAPON_PISTOL, WEAPON_CARBINERIFLE | WEAPON_KNIFE, WEAPON_BAT, WEAPON_SWORD |
| Distanza | Ranged (metri) | Ravvicinato (2-3 metri) |
| Modello | 2 modelli (FP + TP) | 1 modello (solo TP) |
| Animazioni | Fire, Reload, Idle, Walk | Swing, 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:
| Hash | Arma | Animazioni | Danno Base |
|---|---|---|---|
WEAPON_KNIFE | Coltello | Pugnalata + taglio | 20 |
WEAPON_BAT | Mazza da baseball | Swing orizzontale | 35 |
WEAPON_HAMMER | Martello | Swing dall’alto | 30 |
WEAPON_CROWBAR | Piede di porco | Swing | 30 |
WEAPON_GOLFCLUB | Mazza da golf | Swing | 25 |
WEAPON_SWORD | Katana | Taglio | 45 |
WEAPON_MACHETE | Machete | Taglio | 40 |
WEAPON_BATTLEAXE | Ascia da battaglia | Swing potente | 50 |
WEAPON_WRENCH | Chiave inglese | Swing | 25 |
WEAPON_POOLCUE | Stecca da biliardo | Spinta | 20 |
TIP
Per le spade, il miglior hash di partenza è
WEAPON_SWORD(katana) oWEAPON_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
| Parametro | Descrizione | Valore Tipico |
|---|---|---|
MeleeHitRange | Distanza massima del colpo | 1.5 (pugnale) — 3.5 (spada lunga) |
MeleeDamageType | Tipo di danno (vedi sotto) | MELEE_DAMAGE_CUT |
MeleePhysicsForce | Forza fisica dell’impatto | 30-80 |
MeleeSwingSpeed | Velocità dell’animazione di attacco | 0.8 (lento) — 3.0 (veloce) |
MeleeWeaponHitDamageToWeapon | Danno subito dall’arma quando colpisce | 0.0 (indistruttibile) |
Tipi di Danno Melee
| Tipo | Effetto | Usato da |
|---|---|---|
MELEE_DAMAGE_CUT | Taglio/sanguinamento | Spade, coltelli, machete |
MELEE_DAMAGE_BLUNT | Contundente/ammaccatura | Mazze, martelli, wrench |
MELEE_DAMAGE_PIERCE | Perforazione/penetrazione | Stiletto, baionetta |
MELEE_DAMAGE_BULLET | Danno 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 Group | Adatto per |
|---|---|
ANIM_GROUP_KNIFE | Coltelli, pugnali, stiletti |
ANIM_GROUP_SWORD | Spade, katane, machete |
ANIM_GROUP_BAT | Mazze, bastoni, mazze da baseball |
ANIM_GROUP_HAMMER | Martelli, asce |
ANIM_GROUP_BOTTLE | Bottiglie 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
| Animazione | Descrizione |
|---|---|
MeleeAnim | Attacco primario (colpo base) |
MeleeAnim2 | Attacco secondario (combo) |
MeleeAnim3 | Attacco terziario (combo potente) |
WalkAnim | Camminata con arma in mano |
SprintAnim | Corsa con arma in mano |
IdleAnim | Posizione 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
- Skeleton: L’arma si attacca all’osso
SKEL_R_Hand(mano destra) - Posizione: L’elsa deve essere nel palmo, la lama protesa in avanti
- Poligoni: 2.000-15.000 vertici (spade semplici stanno in 5.000)
- LOD: Crea LOD models progressivi (100%, 50%, 10%, 1%)
- 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
| Materiale | Proprietà | Consiglio |
|---|---|---|
| Lama | Acciaio/metallo lucido | Specular alta (bianco), riflessione |
| Elsa | Legno/pelle | Specular media (grigio 128), opaca |
| Guardia | Ottone/ferro | Specular media-alta, dettagli dorati |
| Gemme (opzionale) | Rubino/zaffiro | Specular 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)
| Parametro | Valore |
|---|---|
| Hash | WEAPON_LONGSWORD |
| Animation Group | ANIM_GROUP_SWORD |
| Danno | 50 |
| Hit Range | 3.0 |
| Swing Speed | 1.8 |
| Damage Type | MELEE_DAMAGE_CUT |
Ascia da Battaglia (Battleaxe)
| Parametro | Valore |
|---|---|
| Hash | WEAPON_BATTLEAXE |
| Animation Group | ANIM_GROUP_HAMMER |
| Danno | 60 |
| Hit Range | 2.0 |
| Swing Speed | 1.2 |
| Damage Type | MELEE_DAMAGE_CUT |
Mazza Chiodata (Spiked Club)
| Parametro | Valore |
|---|---|
| Hash | WEAPON_BAT |
| Animation Group | ANIM_GROUP_BAT |
| Danno | 40 |
| Hit Range | 2.2 |
| Swing Speed | 2.5 |
| Damage Type | MELEE_DAMAGE_BLUNT |
TIP
Prossimo passo: Rivedi il Modulo Armi Completo per confrontare le differenze con le armi da fuoco.
Torna alla: Indice Generale