Run it
Copy the script and paste it into your executor.
RUN_KEY = .KeyCode.K
UNLOAD_KEY = .KeyCode.M
DEBUG =
(...)
DEBUG (, ...)
().visiblepoints =
FIST_POINTS_PER_SIDE =
FIST_IN_LAYER_SPACING =
FIST_LAYER_SPACING =
FIST_LAYER_COUNT =
FIST_START_FORWARD_OFFSET =
FIST_FORWARD_AXIS =
FIST_NAME_WHITELIST = {
}
WEAPON_STEP_DISTANCE =
WEAPON_POINT_COUNT =
WEAPON_CLAMP_TO_BLADE =
WEAPON_FORCE_AXIS =
WEAPON_START_MODE =
Players = :()
UIS = :()
().__DMGPOINT_UNIFIED__ ().__DMGPOINT_UNIFIED__.Unload
(() ().__DMGPOINT_UNIFIED__.() )
lp = Players.LocalPlayer
connections = {}
created = {}
active =
()
_, c (connections)
(() c:() )
.(connections)
()
(, #created)
_, inst (created)
inst inst.Parent
(() inst:() )
.(created)
active =
(list)
set = {}
_, name (list) set[name] =
set
FIST_WHITELIST = (FIST_NAME_WHITELIST)
(char)
weapon = char:()
weapon weapon
_, child (char:())
child:()
child
(char)
weaponRoot = (char)
weaponRoot
hp = weaponRoot:()
hp hp
_, inst (weaponRoot:())
inst.Name == inst:()
inst
(char)
hitParts = (char)
hitParts
hitParts:()
(char)
hitParts = (char)
hitParts {}
fists = {}
_, v (hitParts:())
v:()
(FIST_WHITELIST) ~=
FIST_WHITELIST[v.Name] .(fists, v)
v.Name:():() .(fists, v)
fists
(cf)
FIST_FORWARD_AXIS == cf.RightVector
FIST_FORWARD_AXIS == cf.UpVector
cf.LookVector
(fistPart)
fistPart fistPart:()
cf = fistPart.CFrame
right = cf.RightVector
up = cf.UpVector
forward = (cf)
(, fistPart.Name,
, FIST_FORWARD_AXIS,
, (cf.LookVector),
, (cf.RightVector),
, (cf.UpVector)
)
n = FIST_POINTS_PER_SIDE
half = (n - ) /
built =
layer = , (FIST_LAYER_COUNT - )
dist = FIST_START_FORWARD_OFFSET + (layer * FIST_LAYER_SPACING)
layerCenterWorld = cf.Position + (forward * dist)
ix = , (n - )
iy = , (n - )
x = (ix - half) * FIST_IN_LAYER_SPACING
y = (iy - half) * FIST_IN_LAYER_SPACING
worldPos = layerCenterWorld + (right * x) + (up * y)
localPos = cf:(worldPos)
att = .()
att.Name =
att.Visible = (().visiblepoints == )
att.CFrame = .(localPos)
att.Parent = fistPart
.(created, att)
built +=
built
(size)
size.X >= size.Y size.X >= size.Z
, size.X *
size.Y >= size.X size.Y >= size.Z
, size.Y *
, size.Z *
(axis, d)
axis == .(d, , )
axis == .(, d, )
.(, , d)
(blade)
blade blade:()
axis, halfLen = (blade.Size)
WEAPON_FORCE_AXIS == WEAPON_FORCE_AXIS == WEAPON_FORCE_AXIS ==
axis = WEAPON_FORCE_AXIS
startD = (WEAPON_START_MODE == ) -halfLen
built =
(, blade.Name, , (blade.Size), , axis, , WEAPON_CLAMP_TO_BLADE)
i = , WEAPON_POINT_COUNT
d = startD + (WEAPON_STEP_DISTANCE * i)
WEAPON_CLAMP_TO_BLADE
d > halfLen + (WEAPON_STEP_DISTANCE * )
att = .()
att.Name =
att.Visible = (().visiblepoints == )
att.CFrame = .((axis, d))
att.Parent = blade
.(created, att)
built +=
built
()
char = lp.Character lp.CharacterAdded:()
(, active)
active
()
()
hitParts = (char)
(, hitParts hitParts:() )
fists = (char)
(, #fists)
_, f (fists) (, f.Name, f:())
blade = (char)
(, blade blade:() )
fistBuilt =
_, fist (fists)
fistBuilt += (fist)
bladeBuilt =
blade
bladeBuilt = (blade)
fistBuilt + bladeBuilt ==
()
active =
(():(fistBuilt, bladeBuilt, #created))
()
()
()
()
().__DMGPOINT_UNIFIED__ =
()
connections[#connections+] = UIS.InputBegan:((input, gameProcessed)
gameProcessed
input.KeyCode == UNLOAD_KEY
()
input.KeyCode == RUN_KEY
.(()
ok, err = (RUN)
ok (, err)
)
)
().__DMGPOINT_UNIFIED__ = { Unload = UNLOAD }
(, RUN_KEY.Name, , UNLOAD_KEY.Name, )
Extends hitbox for all weapons. (I only tested Katanna, Great Sword, and Spear, fists kinda work but not that well, idk about the others.)
Universal