Darkscape 0 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 (изменено) лог [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: d:\games\С.Т.А.Л.К.Е.Р\gamedata\scripts\bind_stalker.script:235: attempt to index global 'inventory' (a nil value) inventory - это скрипт Изменено 3 Ноября 2011 пользователем Artos Ссылка на комментарий
Desertir 202 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 Говори, что и где правил в бинд_сталкер и выкладывай все новые скрипты, под спойлер конечно. Вылет (если я прав) указывает на то, что в скрипте inventory есть синтаксическая ошибка. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Darkscape 0 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 Вылет (если я прав) указывает на то, что в скрипте inventory есть синтаксическая ошибка.Это я понял, но вот где она. В бинд-сталкер просто поставил апдейт этой функции Добавлено через 4 мин.: Все, проблема решена, спасибо Ссылка на комментарий
Zander_driver 10 334 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 (изменено) Darkscape, а зачем у тебя проверки разных предметов через elseif идут? Этак получается, колбаса начнет становиться радиоактивной только тогда, когда нерадиоактивный хлеб в инвентаре закончится. А если его много? понадобится немало апдейтов чтобы до колбасы дошла очередь... Кстати еще один минус такой реализации - за один апдейт из обычного в радиоактивный превратится не более одного предмета... Способ получше - сделать у себя в скрипте список секций продуктов, которые надо проверять, и если радиация поднялась выше 0,3, а перед тем была ниже - перебором предметов в инвентаре сразу обнаруживаем все подходящие предметы (продукты). заносим найденные итемы в таблицу. И при следующем апдейте заменяем их все разом, секцию нового предмета определяя по принципу секция_старогo..rad. Изменено 3 Ноября 2011 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Darkscape 0 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 (изменено) Zander_driver, спасибо за совет, переписал скрипт, получилось: local items1 = {"bread", "kolbasa", "chocolate"} function rad_food() if db.actor.radiation>0.3 then for i=1,table.getn(items1) do db.actor:iterate_inventory(function (dummy,item) if item:section()==items1[i] then dsm.del_item(item) dsm.spawn_item(tostring(items1[i].."_rad")) end end, nil) end end end Все работает, вроде правильно написал 1. Используем спойлеры ... 2. Перед написанием вопросов проверяем коды чекерами (см. в топике по инструментарию) --/ Artos Изменено 3 Ноября 2011 пользователем Artos Ссылка на комментарий
Artos 99 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 (изменено) Кивач: Кто знает где прописан спавн ПДА для НПСов? Прописан в движке. Каждому(!) спавнящемуся НПС после прописанных ему предметов в конфигах (если таковые есть), движек обязательно доспавнивает "именной" КПК. Т.о., сколько в Зоне людей - столько и КПК у них на руках. Изменено 3 Ноября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Vano_Santuri 33 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 Ребят подскажите пожалуйста как определить отношение одной группировки к другой ? В Lua_help нашел функцию. function community_relation(string, string); Предполагаю, что нужно взять id группировок и сравнить. community_relation(id1,id2) Если это то, что я хочу, то какие варианты может вернуть эта функция? good, friend, enemy и т.д... Как вызвать эту функцию? Она глобальная? Или нет? Сам понимаю, что могу сам проверить, но решил спросить у знающих людей... Что-то кончается, что-то начинается... Ссылка на комментарий
Artos 99 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 (изменено) Vano_Santuri Удивляют подобные вопрошалки-переспрошалки ... 1. Спрашивающий не удосуживается уточнить интересующую его версию игры. Гадать о том, что он "нашел" нужную ему функцию в 'lua_help' именно от ему нужной игры (т.е. ЧН/ЗП)? 2. Достаточно сделать простейший поиск по скриптам исходной игры и найти практические примеры применения от разработчиков, из коих предельно ясно и как вызывать функцию и какие аргументы ей нужны и каковы возможные результаты (возвраты) от применения функции (см. game_relations.script). :-( Функция естественно глобальная и принадлежит пространству 'relation_registry'. В качестве аргументов должны быть именно строковые значения группировок (community), а не некие id, под которыми которыми чаще понимают/обозначают численные значения. Возвращаемым результатом является численное значение отношений заданных группировок. Изменено 3 Ноября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
ХОВАН 3 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 Vano_Santuri, relation_registry.community_relation(faction, faction_to) Может возвращать friends и enemies Пример из игры: if(relation_registry.community_relation(squad:get_squad_community(), alife():actor():community())>=FRIENDS) then goodwill = "friend" Поправьте если что Ссылка на комментарий
Artos 99 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 (изменено) ХОВАН Ну для чего вводить в заблуждение? Сам же цитируешь стоку кода от разработчиков: if(relation_registry.community_relation(squad:get_squad_community(), alife():actor():community())>=FRIENDS) then Из коей ясно, что сравниваются ЧИСЛЕННЫЕ значения (>=) результата работы функции и константы (ранее заданной как FRIENDS = 1000). О каких тут возвратах friends иль enemies можно толковать??? Результатом возврата (повторюсь) является численное значение (как минимум в диапазоне: -1000 ... 1000) Изменено 3 Ноября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
AndreySol 215 Опубликовано 3 Ноября 2011 Поделиться Опубликовано 3 Ноября 2011 О форматировании строк вопрос. В примере по добавлению часов на худ, пробую к строке времени добавить еще строку: ............... ............... local str = "вторая строка" local msg = string.format(" %02d:%02d\n%s", time_h, time_m, str) if cs ~= nil then cs:wnd():SetText(msg) end результат получается "07:10вторая строка". Что я не так делаю ? Ссылка на комментарий
RvP 1 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 AndreySol, в конфигах в ui необходимо в секции часов поставить мультистроку Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
*Shoker* 322 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 (изменено) http://stalkerin.gameru.net/modules.php?na...tit&lid=290 Скачай это, умеет проверять скрипты на синтаксические ошибки. Потом, ты сделал чутка не правильно цикл. Сейчас у тебя для КАЖДОГО предмета перебирается ВЕСЬ инвентарь когда достаточно РАЗ перебрать весь инвентарь и сравнивать секцию предмета с той, что в таблице. Плюс такая схема довольно прилично будет нагружать игру. За 1 секунду в среднем выполняется около 4 апдейтов (при норм. ФПС) и терь представь что раз в секунду у тебя столько переборов инвенторя будет Игра просто начнёт тормозить, но ты заметишь это тока тогда, когда у тебя будет куча подобного кода ... В итоге лучше будет сделать так: local items1 = { bread = true, kolbasa = true, chocolate = true, } local rad_food_interval = 0 function rad_food() if db.actor.radiation>0.3 then if rad_food_interval < time_global() then ------------------------------------- db.actor:iterate_inventory(function (dummy,item) if items1[item:section()] then dsm.del_item(item) dsm.spawn_item(tostring(item:section().."_rad")) end end, nil) ------------------------------------- rad_food_interval = time_global() + 1000 --\\ заставим нашу функцию выполнятся РАЗ в секунду end end end В итоге основная часть этой функции будет вызывать только раз в секунду при условии что игрок заражён радиацией. И предметы в инвенторе будут перебираться лишь 1 раз за вызов а не для каждого предмета. > Каждому(!) спавнящемуся НПС после прописанных ему предметов в конфигах (если таковые есть), движек обязательно доспавнивает "именной" КПК. Т.о., сколько в Зоне людей - столько и КПК у них на руках. Правда? Я думал этот рудимент вырезали с билдов, и у них просто обычный PDA спавнится. Тоесть если я напишу npc:object("deivce_pda"), то я в большинстве случаев получу его именной ПДА? (Кстати, а существует ли возможность скриптом изменить имя и описание объекта, как с этими именными ПДА ...) Vano_Santuri -- Узнаём отношение группировки к другой группировке function get_faction_relation(f1, f2) if game_relations.is_factions_friends(f1, f2) then return "friend" end if game_relations.is_factions_enemies(f1, f2) then return "enemy" end return "neutral" end Должно работать, правда на ЗП не проверял. AndreySol В UI-конфиге объекта CS поставь complex_mode = "1" (кажется так) а в скрипте попробуй cs:wnd():SetText(msg) заменить на cs:wnd():SetTextST(msg) Изменено 4 Ноября 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
_Призрак_ 11 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 Может я тоже ошибаюсь, но по моему у тебя тоже есть ошибка: item:section() возвращает строку следовательно таблица должна быть такая: local items1 = { ["bread"] = true, ["kolbasa"] = true, ["chocolate"] = true, } Если я конечно же тоже не ошибаюсь Прошу помощи. Есть ли такая анимация, которая существовала у всех НПС и Мутантов? Дело в том что я спавню скриптом физический объект и присваиваю ему визуал сталкера или мутанта. Но иногда игра вылетает с логом: [error]Expression : motion_ID.valid() [error]Function : CKinematicsAnimated::ID_Cycle [error]File : E:\stalker\sources\trunk\xr_3da\SkeletonAnimated.cpp [error]Line : 136 [error]Description : ! MODEL: can't find cycle: [error]Arguments : $editor пытался прописать через нет пакет другую анимацию: t.skeleton_name="idle" Но некоторые визуалы (например визуал излома или химеры) все равно вылетают. Что нужно написать в t.skeleton_name чтобы не вылетало? Freedom Ссылка на комментарий
KD87 718 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 (изменено) _Призрак_, открой в hex редакторе файл модели, в конце прописаны доступные анимации. У сталкеров прописаны все анимации из stalker_animation.omf, а у монстров анимации по отдельности. У той же химеры, например, анимации "idle" нет. Возможно, поэтому у тебя вылет. Изменено 4 Ноября 2011 пользователем KD87 Ссылка на комментарий
RvP 1 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 *Shoker*, SetTextST отличается только тем, что транслирует строку. Тоесть если подать идентификатор, то выдаст нормальную текстовую строку, а не сам идентификатор. Аналогично SetText(game.translate_string(msg)) Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
*Shoker* 322 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 _Призрак_ Не беспокойся, игра и такую таблицу переваривает, проверенно RvP Спс. Буду знать Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
AndreySol 215 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 В UI-конфиге объекта CS поставь complex_mode = "1" (кажется так) Не помогло. Может еще что ? Ссылка на комментарий
7.9 174 Опубликовано 4 Ноября 2011 Поделиться Опубликовано 4 Ноября 2011 AndreySol, тогда добавь ещё один "слешь": local msg = string.format(" %02d:%02d\n%s", time_h, time_m, str) local msg = string.format(" %02d:%02d\\n%s", time_h, time_m, str) всё легко Ссылка на комментарий
Darkscape 0 Опубликовано 5 Ноября 2011 Поделиться Опубликовано 5 Ноября 2011 По ТЧ: 1. Как скриптово сделать монстра и непися друзьями? 2. Можно ли реализовать в ТЧ сценку из ЗП, где военный стреляет по сторонам, атакованный контролером? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти