Проблема с GLua: «getModel() не является частью библиотеки строк»

#lua #garrys-mod

#lua #garrys-мод

Вопрос:

Мне нужно обновить элемент «spawned_weapon» из darkrp с перемещением из точки A в точку B. Но у меня есть ошибка при использовании функции:

попытка индексировать строковое значение с помощью неверного ключа (‘getModel’ не является частью библиотеки строк)

Точка А — это local items = ents.FindInBox(fst_pos, scnd_pos)
Точка В — это weapon:SetPos(output)

 local items_table = { -- radnom item after upgtade
    "customitem_test1",
    "customitem_test2",
    "customitem_test3",
}

local items = ents.FindInBox(fst_pos, scnd_pos)
for k, v in pairs(items) do
    if IsValid(v) then
        if v:GetClass() == "spawned_weapon" then
            if table.HasValue(WEAPON_SHIELD, v:GetWeaponClass()) then -- check input items
                item_class = table.Random(items_table)

                print("customitem > " .. item_class)

                -- Create teleported item
                local weapon = ents.Create("spawned_weapon")

                -- ERROR LINE
                local model = (item_class:GetModel() == "models/weapons/v_physcannon.mdl" and "models/weapons/w_physics.mdl") or item_class:GetModel()
                model = util.IsValidModel(model) and model or "models/weapons/w_rif_ak47.mdl"

                weapon:SetPos(output)
                weapon:SetModel(model)
                weapon:SetSkin(item_class:GetSkin() or 0)
                weapon:SetWeaponClass(item_class:GetClass())
                weapon.nodupe = true
                weapon:Spawn()
            end
        end
    end
end
 

Комментарии:

1. Что вы на самом деле подразумеваете под строкой # 20? Строка всегда имеет значение True. И не работает правильно. bar = (foo() == string1 and string1) or foo()) If foo() is nil or not equal to string1 then model = nil ?

Ответ №1:

В настоящее время вы получаете случайную строку из таблицы. Что вы могли бы сделать, например, так это то, что вы перебираете все сущности, сравниваете классы сущностей и получаете оттуда модель.