ZeeK 57 Опубликовано 1 Мая 2011 Поделиться Опубликовано 1 Мая 2011 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 Ссылка на комментарий
Garry_Galler 7 Опубликовано 1 Мая 2011 Поделиться Опубликовано 1 Мая 2011 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 А может у него своя 'обертка' ? Поэтому я исправлять не стал. Ссылка на комментарий
speczadanie 0 Опубликовано 2 Мая 2011 Поделиться Опубликовано 2 Мая 2011 Подскажите, в каком файле находится логика Семёнова\Круглова с Янтаря. Ссылка на комментарий
Painter 3 412 Опубликовано 2 Мая 2011 Поделиться Опубликовано 2 Мая 2011 Доброго времени суток, подскажите пожалуйста, как вычислить расстояние от ГГ, до определённого смарта? Заранее спасибо. Портфолио Ссылка на комментарий
TRAMP14 1 Опубликовано 2 Мая 2011 Поделиться Опубликовано 2 Мая 2011 а есть ли чтото вроде 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) Ссылка на комментарий
RvP 1 Опубликовано 2 Мая 2011 Поделиться Опубликовано 2 Мая 2011 TRAMP14, return же в цикле стоит.. Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
Disord 1 Опубликовано 2 Мая 2011 Поделиться Опубликовано 2 Мая 2011 Здравствуйте! Существует ли функция убирания предмета из слота в инвентарь? Ссылка на комментарий
Garry_Galler 7 Опубликовано 2 Мая 2011 Поделиться Опубликовано 2 Мая 2011 Disord Существует. Но не в оригинале, а в не выложенном в открытый доступ патче для ТЧ. (патч делается эксклюзивно для одного мода). TRAMP14 Цикл for закрой end-ом. Чекер тебе написал все что нужно сделать. И nil можешь убрать - он не нужен. А дабы не путаться вместо анонимной функции итерации пиши локальную. Ссылка на комментарий
Charsi 440 Опубликовано 3 Мая 2011 Поделиться Опубликовано 3 Мая 2011 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 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
TRAMP14 1 Опубликовано 3 Мая 2011 Поделиться Опубликовано 3 Мая 2011 (изменено) Цикл for закрой end-ом. Чекер тебе написал все что нужно сделать. И nil можешь убрать - он не нужен. В том то и дело что он закрыт (это и есть вся функция). Прошлую такую ошибку я исправил перегрузкой чекера (перепроверял им скрип пока он мне не показал что всё правильно. глупо конечно, но ошибка для меня и правда непонятная. А дабы не путаться вместо анонимной функции итерации пиши локальную Если честно не понял Создать одну в начале и подгружать? Было такое дело. Не вылета небыло, ничего, но и функция не заработала Изменено 3 Мая 2011 пользователем TRAMP14 Ссылка на комментарий
Disord 1 Опубликовано 3 Мая 2011 Поделиться Опубликовано 3 Мая 2011 Charsi, спасибо огромное! И ещё вопрос: есть ли каллбек на перемещение предмета в слот? Или на апдейт вешать придётся? Ссылка на комментарий
ZeeK 57 Опубликовано 3 Мая 2011 Поделиться Опубликовано 3 Мая 2011 Сделал логику, но мне нада что бы она хватала НПС, потом отпускала вновь в симуляцию, ждала пару часов и вновь становилась активной. Знаю как все сделать кроме-отпускала в симуляцию. Подскажите плз Не соответствует. N6260 Ссылка на комментарий
Garry_Galler 7 Опубликовано 3 Мая 2011 Поделиться Опубликовано 3 Мая 2011 (изменено) TRAMP14 Очень плохо что не понял. Локальная функция - это именованная функция внутри функции. Посмотри примеры в модах. for у тебя не закрыт. Ты не соблюл правила lua - так что вперед изучать теорию. И вообще зачем изобретать велосипед - возьми пример готовой функции из любого мода (поиск по iterate) которая итерирует инвентарь - сделай себе из нее то что нужно. Изменено 3 Мая 2011 пользователем Garry_Galler Ссылка на комментарий
TRAMP14 1 Опубликовано 3 Мая 2011 Поделиться Опубликовано 3 Мая 2011 (изменено) 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 ? Изменено 3 Мая 2011 пользователем TRAMP14 Ссылка на комментарий
_Призрак_ 11 Опубликовано 3 Мая 2011 Поделиться Опубликовано 3 Мая 2011 Явная ошибка: 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 Ссылка на комментарий
TRAMP14 1 Опубликовано 3 Мая 2011 Поделиться Опубликовано 3 Мая 2011 После ретурн ничего не должно стоять А если его убрать ничего не будет? Я собственно и ставить его не хотел, но..... Ссылка на комментарий
_Призрак_ 11 Опубликовано 4 Мая 2011 Поделиться Опубликовано 4 Мая 2011 return - показывает двигателю, что нужно возвратить что-то. В твоем случае возвращается переменная kol Freedom Ссылка на комментарий
Nazgool 250 Опубликовано 4 Мая 2011 Поделиться Опубликовано 4 Мая 2011 А если его убрать ничего не будет? Я собственно и ставить его не хотел, но..... Если не знаешь Lua - изучай. Если не хочешь - верь чекеру. Я его писал с использованием стандартной библиотеки Иерусалимски. Т.е. ошибки не придумывал. Конечно можно предположить что при написании кривые руки были у меня и у автора Lua, но только не у тебя. Так? Если не так и если чекер говорит что после return ... должен стоять end, то может быть так оно и есть? Ну а если возникнет вопрос "Почему?", то см. первую строку этого сообщения. Ссылка на комментарий
TRAMP14 1 Опубликовано 5 Мая 2011 Поделиться Опубликовано 5 Мая 2011 про лишний ретурн чекер ничего не говорил... Ссылка на комментарий
Nazgool 250 Опубликовано 5 Мая 2011 Поделиться Опубликовано 5 Мая 2011 (изменено) А кто сказал что rеturn лишний? Может лишнее то, что после него? Всё зависит от того, что именно ты хотел сделать. Но в любом случае метод тыка ("Не хотел ставить, но решил ...") в скриптовнии не проходит. Если уж тебе и захотелось его куда-то присобачить, то необходимо было хоть документацию почитать, чтобы точно знать куда и когда писать. Изменено 5 Мая 2011 пользователем Gun12 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти