Перейти к контенту

Рекомендуемые сообщения

Garry_Galler

Expression : !m_error_code

Function : raii_guard::~raii_guard

File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

Line : 748

Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:1306: attempt to index local 'obj' (a nil value)

 

 

Может я неправильно в бинд_сталкере дописал? я поставил

dialogs_mod_marsh.change_relationship()

end

перед последним end в actor_binder:update(delta)

Не соответствует. N6260

Ссылка на комментарий

ZeeK

Забыл, что у тебя это на апдейте стоит - тогда стоит добавить проверку на текущую группировку,чтобы лишних действий не выполнялось.

А лог твой мне ни о чем не говорит.

function change_relationship()
local  actor = db.actor
local outfit=db.actor:get_current_outfit() 
if outfit then 
   if find_in_string(outfit:section(),"stalker_monolith_outfit") then 
      if actor:character_community() ~= "monolith" then 
       actor:set_character_community("monolith" ,0,0)
       end 
    else 
      if actor:character_community() ~= "actor" then 
      actor:set_character_community("actor",0,0)
         end
      end 
   end 
end

 

TRAMP14

А может у него своя 'обертка' ? Поэтому я исправлять не стал.

Ссылка на комментарий

Доброго времени суток, подскажите пожалуйста, как вычислить расстояние от ГГ, до определённого смарта? Заранее спасибо.

Ссылка на комментарий

а есть ли чтото вроде

db.actor:set_actor_position

для неписей?

 

Добавлено через 18 мин.:

И ещё вот такой момент:

Вот код

    for k, v in pairs(one_slot) do
        local kol = 0
        db.actor:iterate_inventory(function (dummy, item)if item:section() == v then kol=kol+1 end end, nil)
        return kol
        if  kol > kol_one then
            tramp.drop(v)
        end
    end

И вот такая ошибка

перед 'if' ожидается 'end'  
(необходимо закрыть 'for' в строке 110)

 

Ссылка на комментарий

Disord

Существует. Но не в оригинале, а в не выложенном в открытый доступ патче для ТЧ. (патч делается эксклюзивно для одного мода).

 

TRAMP14

Цикл for закрой end-ом. Чекер тебе написал все что нужно сделать. И nil можешь убрать - он не нужен. А дабы не путаться вместо анонимной функции итерации пиши локальную.

Ссылка на комментарий

Disord, предмет из слота скидывается так:

function drop_item_to_inventory(number)
local actor=db.actor
local item = actor:item_in_slot(number)
if item then
    actor:drop_item(item)
    local sobj=alife():create(item:section(),actor:position(),actor:level_vertex_id(),actor:game_vertex_id(),0)
    actor:transfer_item(item,actor)
    alife():release(sobj,true)
end
end

 

Ссылка на комментарий
Цикл for закрой end-ом. Чекер тебе написал все что нужно сделать. И nil можешь убрать - он не нужен.

В том то и дело что он закрыт (это и есть вся функция). Прошлую такую ошибку я исправил перегрузкой чекера (перепроверял им скрип пока он мне не показал что всё правильно. глупо конечно, но ошибка для меня и правда непонятная.

А дабы не путаться вместо анонимной функции итерации пиши локальную

Если честно не понял :(:blush: Создать одну в начале и подгружать? Было такое дело. Не вылета небыло, ничего, но и функция не заработала :(

Изменено пользователем TRAMP14
Ссылка на комментарий
Charsi, спасибо огромное! И ещё вопрос: есть ли каллбек на перемещение предмета в слот? Или на апдейт вешать придётся?
Ссылка на комментарий

Сделал логику, но мне нада что бы она хватала НПС, потом отпускала вновь в симуляцию, ждала пару часов и вновь становилась активной. Знаю как все сделать кроме-отпускала в симуляцию. Подскажите плз

Не соответствует. N6260

Ссылка на комментарий

TRAMP14

Очень плохо что не понял. Локальная функция - это именованная функция внутри функции. Посмотри примеры в модах.

for у тебя не закрыт. Ты не соблюл правила lua - так что вперед изучать теорию.

И вообще зачем изобретать велосипед - возьми пример готовой функции из любого мода (поиск по iterate) которая итерирует инвентарь - сделай себе из нее то что нужно.

Изменено пользователем Garry_Galler
Ссылка на комментарий
for у тебя не закрыт. Ты не соблюл правила lua - так что вперед изучать теорию.

НУ как не закрыт? Вот вся функция без изменений:

function oOne()
    for k, v in pairs(one_slot) do
        local kol = 0
        db.actor:iterate_inventory(function (dummy, item)if item:section() == v then kol=kol+1 end end, nil)
        return kol
        if  kol > kol_one then
            tramp.drop(v)
        end
    end
end

Всегу нужно 3 endа. Так? 1 для функции, 2 для for и 3 для if.

p/s/ Спасибо за идею таких названий (вроде: oOne, tTwo)!

Очень плохо что не понял. Локальная функция - это именованная функция внутри функции. Посмотри примеры в модах.

Это вроде

local function.....()
...
end

?

Изменено пользователем TRAMP14
Ссылка на комментарий

Явная ошибка:

function oOne()
    for k, v in pairs(one_slot) do
        local kol = 0
        db.actor:iterate_inventory(function (dummy, item)if item:section() == v then kol=kol+1 end end, nil)
        if  kol > kol_one then
            tramp.drop(v)
        end
        return kol
    end
end

После ретурн ничего не должно стоять

Freedom

Ссылка на комментарий
После ретурн ничего не должно стоять

А если его убрать ничего не будет? Я собственно и ставить его не хотел, но.....

Ссылка на комментарий

return - показывает двигателю, что нужно возвратить что-то. В твоем случае возвращается переменная kol

Freedom

Ссылка на комментарий
А если его убрать ничего не будет? Я собственно и ставить его не хотел, но.....

Если не знаешь Lua - изучай. Если не хочешь - верь чекеру.

Я его писал с использованием стандартной библиотеки Иерусалимски. Т.е. ошибки не придумывал.

Конечно можно предположить что при написании кривые руки были у меня и у автора Lua, но только не у тебя. Так?

Если не так и если чекер говорит что после return ... должен стоять end, то может быть так оно и есть?

Ну а если возникнет вопрос "Почему?", то см. первую строку этого сообщения.

Ссылка на комментарий

А кто сказал что rеturn лишний? Может лишнее то, что после него?

Всё зависит от того, что именно ты хотел сделать.

Но в любом случае метод тыка ("Не хотел ставить, но решил ...") в скриптовнии не проходит.

Если уж тебе и захотелось его куда-то присобачить, то необходимо было хоть документацию почитать, чтобы точно знать куда и когда писать.

Изменено пользователем Gun12
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

AMK-Team.ru

×
×
  • Создать...