точно есть дэшм
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
extends StaticBody3D
|
||||
|
||||
# ID оружия из WeaponResource (например: 0 - пистолет, 1 - автомат)
|
||||
@export var weaponIdToGive : int = 0
|
||||
|
||||
func _on_detect_area_area_entered(area: Area3D):
|
||||
# Проверяем, что в зону вошел именно игрок
|
||||
if area.get_parent() is PlayerCharacter:
|
||||
var playChar = area.get_parent()
|
||||
|
||||
# 1. Сначала проверяем, есть ли вообще у игрока LinkComponent (как в вашем ящике)
|
||||
var linkComponent : Node3D = playChar.get_node_or_null("LinkComponent")
|
||||
|
||||
if linkComponent != null:
|
||||
# 2. Ищем WeaponManager напрямую внутри игрока (playChar) на любой глубине
|
||||
var weapon_manager = playChar.find_child("WeaponManager", true, false)
|
||||
|
||||
# Если по имени "WeaponManager" не нашло, попробуем найти скрипт, где есть weaponStack
|
||||
if weapon_manager == null:
|
||||
for child in playChar.get_children():
|
||||
if "weaponStack" in child:
|
||||
weapon_manager = child
|
||||
break
|
||||
|
||||
# 3. Если менеджер успешно найден, выполняем подбор
|
||||
if weapon_manager and "weaponStack" in weapon_manager:
|
||||
# Проверяем, нет ли этого оружия уже в инвентаре
|
||||
if not weapon_manager.weaponStack.has(weaponIdToGive):
|
||||
|
||||
# Добавляем ID оружия в стек игрока
|
||||
weapon_manager.weaponStack.append(weaponIdToGive)
|
||||
|
||||
# Обновляем текущий индекс оружия на только что подобранное
|
||||
weapon_manager.weaponIndex = weapon_manager.weaponStack.size() - 1
|
||||
|
||||
# Вызываем оригинальную функцию смены оружия
|
||||
weapon_manager.changeWeapon(weaponIdToGive)
|
||||
|
||||
# Удаляем объект оружия с земли
|
||||
queue_free()
|
||||
else:
|
||||
print("У игрока уже есть это оружие в weaponStack")
|
||||
else:
|
||||
print("КРИТИЧЕСКАЯ ОШИБКА: Узел WeaponManager вообще не найден внутри сцены игрока!")
|
||||
else:
|
||||
print("Player character can't pickup weapons (LinkComponent missing)")
|
||||
Reference in New Issue
Block a user