strchi 1 Опубликовано 24 Декабря 2011 Поделиться Опубликовано 24 Декабря 2011 (изменено) Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:405: attempt to concatenate field '?' (a nil value) Это на ЧАЭС 1. Клиент: Синхронизация... * phase time: 11 ms * phase cmem: 285151 K * [win32]: free[2174888 K], reserved[107276 K], committed[1912076 K] * [ D3D ]: textures[1071362 K] * [x-ray]: crt heap[285151 K], process heap[8507 K], game lua[3052 K], engine lua[218 K], render[931 K] * [x-ray]: economy: strings[1895 K], smem[53698 K] Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value) Вот такая ерунда при переходе на N-ную локацию. Помогите пожалуйста! [9549] ; cse_abstract properties section_name = level_changer name = level_changer_stancia_2_to_stancia position = -40.413513183594,-0.028096795082092,55.799430847168 direction = -0.23880127072334,0,-0.97106844186783 ; cse_alife_object properties game_vertex_id = 2517 distance = 0 level_vertex_id = 66413 object_flags = 0xffffff3e ; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 15.4235229492188,0,0 shape0:axis_y = 0,15.0454006195068,0 shape0:axis_z = 0,0,5.50719976425171 shape0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 3 ; cse_alife_level_changer properties dest_game_vertex_id = 2376 dest_level_vertex_id = 67229 dest_position = 135.100006103516,-0.101432323455811,-74.8999938964844 dest_direction = 0,0,0 dest_level_name = l12_stancia [9550] ; cse_abstract properties section_name = level_changer name = level_changer_stancia_2_to_yantar_old position = 844.41125488281,-0.097796887159348,463.79565429688 direction = -0.43719217181206,0,0.89936810731888 ; cse_alife_object properties game_vertex_id = 2650 distance = 0 level_vertex_id = 263841 object_flags = 0xffffff3e story_id = 6013 ; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 15.4235229492188,0,0 shape0:axis_y = 0,15.0454006195068,0 shape0:axis_z = 0,0,5.50719976425171 shape0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 3 ; cse_alife_level_changer properties dest_game_vertex_id = 4339 dest_level_vertex_id = 4843 dest_position = -266,6.67631340026855,24 dest_direction = 0,0,0 dest_level_name = yantar_old Изменено 24 Декабря 2011 пользователем strchi Ссылка на комментарий
kota 0 Опубликовано 24 Декабря 2011 Поделиться Опубликовано 24 Декабря 2011 Привет. Пользовался поиском, не нашел того, что нужно. Как узнать dest_game_vertex_id и dest_level_vertex_id? Ссылка на комментарий
student91122 1 Опубликовано 24 Декабря 2011 Поделиться Опубликовано 24 Декабря 2011 (изменено) как сделать сброс инвентаря при нажатия на кнопку в ЗП? Изменено 24 Декабря 2011 пользователем student91122 Ссылка на комментарий
*Shoker* 322 Опубликовано 24 Декабря 2011 Поделиться Опубликовано 24 Декабря 2011 1) Нажатие кнопки где? Это имеет большое значение 2) Сам сброс реализовать технически не очень трудно, но тут тоже много параметров. Во первых сбрасывать куда - на землю или в отдельный рюкзачёк. И потом, там тоже есть свои тонкости. Ну и в 3) За тебя это врятле кто сделает, это всё таки хоть и простое но уже требующее времени дело. Здесь тебе могут тока подсказать основные функции, а как их задействовать и откуда вызывать уже самому придётся разбираться. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
AndreySol 215 Опубликовано 24 Декабря 2011 Поделиться Опубликовано 24 Декабря 2011 Есть ли для оружия ф-ция, которая возвращает список патронов, которые можно для него использовать ? Или надо самому парсить ammo_class из соответствующего ltx-файла ? Ссылка на комментарий
student91122 1 Опубликовано 24 Декабря 2011 Поделиться Опубликовано 24 Декабря 2011 (изменено) *Shoker*,1)Кнопка на клаве.2)При нажатие кнопки зади ГГ спав рюкзака в котором будет весь инвентарь. Будут дальше безграмотные и/или бессмысленные вопросы - сообщения будут удаляться. --/Artos Изменено 24 Декабря 2011 пользователем Artos Ссылка на комментарий
Artos 99 Опубликовано 24 Декабря 2011 Поделиться Опубликовано 24 Декабря 2011 (изменено) AndreySol, нет такой штатной функции дабы получать списое используемых оружием патронов. student91122, если ты думаешь, что тут тебе напишут мод "Сбрасываемый рюкзак" - то заблуждаешься и, чем мусорить в топик, посмотри сам и по аналогии делай. Если же не будет что-то получаться - вот тогда и задавай конкретные информативные и грамотно написанные вопросы. Добавлено через 4 мин.: kota, как узнать координаты точки о которой ничего неизвестно? Или в SDK обределяй точки для переходов или скриптами "аля-информер" смотри сам при заходе на требуемую локацию. Изменено 24 Декабря 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Капрал Хикс 536 Опубликовано 24 Декабря 2011 Поделиться Опубликовано 24 Декабря 2011 Такой вопрос: при попадании из оружия в радиоприемник требуется определить, с какого расстояния было осуществлено попадание. При расстоянии равном или больше 100 метров - выдать поршень. Кто-нибудь сталкивался? Ссылка на комментарий
strchi 1 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 Опять глюк, помогите пожалуйста. Я ставлю на радар переход на нестандартную локацию, в моем случаи Х-8 и получаю вылет при загрузке игры, в начале при кешировании объектов без лога. Ссылка на комментарий
Полтергейст 38 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 Вопрос по net-пакетам. По какому смещению находится таблица in-рестрикторов для класса cse_alife_human_stalker? Ссылка на комментарий
KD87 718 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 Капрал Хикс, повесь в биндер объекта hit_callback. В вызываемой функции считай расстояние. Как-то так, я думаю: function generic_physics_binder:hit_callback(obj, amount, local_direction, who, bone_index) local dist = self.object:position():distance_to(who:position()) if dist > 100 then db.actor:give_info_portion(...) end end Добавлено через 5 мин.: Полтергейст, а оно разное от объекта к объекту. Зависит от наличия/отсутствия строковых параметров у объекта - кастом дата, character_profile и т.д. Разбирай пакет полностью. Ссылка на комментарий
ColR_iT 171 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 Капрал Хикс, можно сделать через логику для радио. Вот это пишешь в логику: on_hit = hit [hit] on_info = {=chek_dictance} %+infoportion% Где: chek_dictance - функция в файле xr_condition следующего вида: function chek_dictance () local sid = 4 -- это Шустырй, нужно поставить свой story_id в секцию спавна радио и прописать его сюда local object = alife():story_object(sid) local object_pos = object.position() return actor_pos:distance_to_sqr(object_pos) >= 10000 end infoportion - инфопоршен, который будет выдан, если функция chek_dictance вернет true. Ссылка на комментарий
Artos 99 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 (изменено) Есть еще более простое решение (штатной логикой) по выдаче инфопоршня при попадании актором в приемник: on_hit = hit [hit] on_actor_dist_ge_nvis = 100 | %+my_infoportion% - этот вариант проще. Инфопоршень будет выдан если приемник получит повреждение и актор ближе 100м, хотя ... хит может быть и не от актора. Изменено 25 Декабря 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Painter 3 412 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 (изменено) Извините, что встреваю... Можно попробовать применить и такой вариант (если работаешь на ЗП). on_hit = hit [hit] on_info = {=hit_by_actor =dist_to_actor_ge(100)} %+my_infoportion% Поправьте, если ошибаюсь. Изменено 26 Ноября 2019 пользователем Jurok Портфолио Ссылка на комментарий
Полтергейст 38 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 (изменено) KD87 а оно разное от объекта к объекту. Зависит от наличия/отсутствия строковых параметров у объекта - кастом дата, character_profile и т.д. Разбирай пакет полностью. У меня чистая игра 1.0006, могу ли я использовать parse_stalker_packet из amk.script для разбора пакетов? В AMK в se_stalker после чтения/записи онлайн работ идёт чтение/запись числа, а в чистой 1.0006 вместо них идёт 2 bool значения. Вот сама функция: function parse_stalker_packet(ret,stpk,updpk,size) parse_human_packet(ret,stpk,updpk) parse_skeleton_packet(ret,stpk,updpk) ret.hellodlg=updpk:r_stringZ() ret.stunk1={} for i=stpk:r_tell(),size-1,1 do table.insert(ret.stunk1,[b]stpk:r_u8()[/b]) end return ret end Выделенный жирным фрагмент отвечает за считывания этих чисел (уже не помню, сколько их там), или это что-то другое? Штатная функция самой игры ( alife():remove_all_restrictions(se_obj, 2)) не работает - просто виснет. Изменено 25 Декабря 2011 пользователем Полтергейст Ссылка на комментарий
Artos 99 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 (изменено) Полтергейст, если у тебя виснет для непися штатная функция то ... я бы посоветовал разобраться именно с этим. Попытка обойти нештатными методами то, что имеет проблему в игре врядли в данном случае уместна, тем более похоже в нет-пакетах ты пока 'плаваешь' ... 1. Выделенный тобою фрагмент из АМК-кода не относится к требуемому тебе. Это всего лишь неопределенный остаток байтов (stunk) от основной части пакета, который АМК-код не разбирает, а оставляет бинарным куском. 2. Тебе требуется брать параметры dynamic_out_restrictions и dynamic_in_restrictions из секции cse_alife_creature_abstract пакета. В АМК-варианте это в функции parse_creature_packet и параметры обзываются: crvu32u16u1 и crvu32u16u2 . Так что получив таблицу из parse_stalker_packet, бери эти параметры из нее. Но имей ввиду, запихивать или очищаять"ручками" рестрикторы серверному объекту следует и аккуратно и в случае реальной необходимости, а не абы ... Изменено 25 Декабря 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
KD87 718 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 (изменено) Полтергейст, формат нет-пакетов одинаковый в патчах 1.0002-1.0006, можешь использовать функции амк. Неудивительно, что виснет. Первый аргумент метода - id объекта, а не он сам. Также есть еще метод remove_all_restrictions() для клиентского объекта. Правда, в таком случае удаляются и out-рестрикторы. Изменено 25 Декабря 2011 пользователем KD87 Ссылка на комментарий
Artos 99 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 Jurok, не уверен на 100%, но ... врядли предложенный тобою вариант будет применим именно к приемнику или ему подобному объекту. Особенность в том, что hit_by_actor работает с забинденными объектами, точнее с теми что зарегистрированны в db.storage, куда всякая всячина не заносится ... и соответственно не имеет таблички hit "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Полтергейст 38 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 (изменено) Artos если у тебя виснет для непися штатная функция то ... я бы посоветовал разобраться именно с этим В том и странность: функция remove_all_restrictions виснет, но если удалять отдельно каждый рестриктор через alife():remove_in_restriction(...), то всё нормально. Для клиентского объекта функция add_restrictions тоже виснет, в то время, как alife():add_in_restriction(...) работает как надо. KD87 Дело в том, что удаление рестрикторов я делаю в функции net_destroy. Если я вызову remove_all_restrictions(), то ничего не произойдёт - игра просто напишет, что объект, для которого эта функция вызвана, не найден. Изменено 25 Декабря 2011 пользователем Полтергейст Ссылка на комментарий
Artos 99 Опубликовано 25 Декабря 2011 Поделиться Опубликовано 25 Декабря 2011 (изменено) Полтергейст, раз виснет - это признак того, что или удаляешь некорректно или удаляешь критически важные для объекта рестрикторы (например обрабатываемые схемами или т.п.). Тогда и при удалении через нет-пакеты поимеешь аналогичное. Попробуй хотя бы через увод непися в оффлайн чистить ему рестрикторы. А вообще занимаемся погадалками-предполагалками ... Или опиши более информативно ситуацию или ... гадай самостоятельно. Изменено 25 Декабря 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти