лнкс 0 Опубликовано 25 Января 2011 Возникал вот такая проблема: На локации "Предбанник" в подвале, где арсенал, вместо одного из декоративных калашей поставил G36C. Поставил не как муляж, а как оружие. Прописал ему полный магазин, оптику и глушак. Если стоят обвесы, то при переходе ствола в on-line - вылет без лога. Второе, если убрать обвесы вылета нет, но когда беру ствол у него получается большой вес и при разрядке вместо 30 патронов девять-с-хреном тысяч. Где я мог накосячить? Спавнил в all.spawn. Если вопрос не в тему, то скажите где спросить. Лучше спросить глупость, чем её совершить. Поделиться этим сообщением Ссылка на сообщение
лнкс 0 Опубликовано 21 Июля 2011 Имеется код: local level_name = { ["l01_escape"] = "Кордон", ["l02_garbage"] = "Свалка", ["l03_agroprom"] = "НИИ Агропром", ["l03u_agr_undergroun"] = "Подземелье НИИ Агропром", ["l04_darkvalley"] = "Тёмная долина", ["l04u_labx18"] = "Лаборатория X-18", ["l05_bar"] = "Бар", ["l06_rostok"] = "Дикая территория", ["l07_military"] = "Арм.склады", ["l08_yantar"] = "Янтарь", ["l08u_brainlab"] = "Лаборатория X-16", ["l10u_bunker"] = "Лаборатория X-10", ["l10_radar"] = "Радар", ["l11_pripyat"] = "Припять", ["l12_stancia"] = "ЧАЭС", ["l12_stancia_2"] = "ЧАЭС", ["l12u_sarcofag"] = "Саркофаг", ["l12u_control_monolith"] = "Управление Монолитом" } local community = { ["stalker"] = "Сталкер", ["monolith"] = "Монолит", ["military"] = "Военные", ["bandit"] = "Бандит", ["killer"] = "Наемник", ["ecolog"] = "Эколог", ["dolg"] = "Долг", ["freedom"] = "Свобода", ["zombied"] = "Зомбированный", ["trader"] = "Торговец" } function kill_npc(victim, who) if victim and IsStalker(victim) then local dead_news = "\\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Имя: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()].."" db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000) end end . Далее делаю по иструкции: Далее открываем xr_motivator.script, который находится в gamedata\scripts, ищем функцию: function motivator_binder:death_callback(victim, who) и после пишем: имя_вашего_файла.news_of_npc_kill(victim) в итоге: function motivator_binder:death_callback(victim, who) имя_вашего_файла.kill_npc(victim, who) if who:id() == db.actor:id() then xr_statistic.addKillCount(self.object) end Вот собственно и все! . На основных локациях работает, захожу на "предбанник", валю первого попавшегося npc получаю вылет: * [win32]: free[884348 K], reserved[184740 K], committed[1028000 K] * [ D3D ]: textures[345979 K] * [x-ray]: crt heap[347446 K], process heap[509894 K], game lua[22431 K], engine lua[195 K], render[1255 K] * [x-ray]: economy: strings[4565 K], smem[30037 K] * MEMORY USAGE: 355412 K FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...t.a.l.k.e.r\gamedata\scripts\news_of_npc_kill.script:37: attempt to concatenate field '?' (a nil value) stack trace: . Меняю код: local level_name = { ["l01_escape"] = "Кордон", ["l02_garbage"] = "Свалка", ["l03_agroprom"] = "НИИ Агропром", ["l03u_agr_undergroun"] = "Подземелье НИИ Агропром", ["l04_darkvalley"] = "Тёмная долина", ["l04u_labx18"] = "Лаборатория X-18", ["l05_bar"] = "Бар", ["l06_rostok"] = "Дикая территория", ["l07_military"] = "Арм.склады", ["l08_yantar"] = "Янтарь", ["l08u_brainlab"] = "Лаборатория X-16", ["l10u_bunker"] = "Лаборатория X-10", ["l10_radar"] = "Радар", ["l11_pripyat"] = "Припять", ["l12_stancia"] = "ЧАЭС", ["l12_stancia_2"] = "ЧАЭС", ["l12u_sarcofag"] = "Саркофаг", ["l12u_control_monolith"] = "Управление Монолитом" ["predbannik"] = "predbannik" } local community = { ["stalker"] = "Сталкер", ["monolith"] = "Монолит", ["military"] = "Военные", ["bandit"] = "Бандит", ["killer"] = "Наемник", ["ecolog"] = "Эколог", ["dolg"] = "Долг", ["freedom"] = "Свобода", ["zombied"] = "Зомбированный", ["trader"] = "Торговец" } function kill_npc(victim, who) if victim and IsStalker(victim) then local dead_news = "\\n%c[255,160,160,160]Группировка: %c[default]"..community[victim:character_community()].."\\n%c[255,160,160,160]Имя: %c[default]"..victim:character_name().."\\n%c[255,160,160,160]Локация: %c[default]"..level_name[level.name()].."" db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000) end end , начинаю новую игру, валю первого попавшегося на "кордоне", получаю вылет: Intro start 1361 * MEMORY USAGE: 333535 K FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\xr_motivator.script:162: attempt to index global 'news_of_npc_kill' (a nil value) stack trace: . Вопрос: что я не так сделал? Лучше спросить глупость, чем её совершить. Поделиться этим сообщением Ссылка на сообщение
лнкс 0 Опубликовано 11 Сентября 2011 (изменено) Всем доброго времени суток. Возник такой вопрос: какой файл(скрипт, конфиг) запрещает на какой-либо локации спавнить нпс определённого ранга? Хочу при респавне на кордоне заспавнить бандюков в ранге "мастер", но простым редактированием spawn_sections.ltx это у меня не получается. Подскажите решение, пожалуйста. Задавайте вопросы более внятно. 1. 'Запрет' и 'не разрешение' - различные понятия. Нет нкаких запретов на (ре)спавн по рангам и по локациям. Имеются нте или иные конфиги/параметры. И если чего-то нет или параметр 'мал' - то не нужно путуть с запретом. 2. 'Респавном' - не спавнят, это 'автоматическое' событие, и тем более, при чем тут редактирование 'spawn_sections.ltx'? Разберись сам что же ты хочешь. Заспавнить кого-то - куда-то, иль настроить респавн. Во втором случае как минимум требуется информация где же тебе потребно чтобы респавнились. --/ Artos Добавлено через 84 мин.: Именно настроить респавн на кордоне, на АТП. В 'spawn_sections.ltx' прописывается ранг нпс при респавне и простое изменение новичков на мастеров не срабатывает. Почему? Потому что метод тыка в подобных вещах порочен и практически на 100% бесполезен. В 'spawn_sections.ltx' прописаны СЕКЦИИ объектос (НПС), в которых в отличии от исходной родительской секции, дополнительно прописываются треьуемые параметры, в том числе и ранг. Эти секции предназначены для любого спавна (само название файла говорит за себя!) и 'респавн' - это только частный случай. Респавны в игре НЕ читают рангов, а оперирует названиями секций и группировками. --/ Artos Изменено 11 Сентября 2011 пользователем Artos Лучше спросить глупость, чем её совершить. Поделиться этим сообщением Ссылка на сообщение
лнкс 0 Опубликовано 12 Сентября 2011 (изменено) Artos, а какие могут быть иные ограничения? Дописать секции в спавнере не проблема. Ну во первых не в 'спавнер', а в конфиг секций для спавна. 'Спавнером' все же называют иль скрипт иль схему (se_respawn). Во-вторых, имел ввиду в основном уже имеющиеся секции, которые могут иметь и кастомдату, иль в кодах игры именно этим секциям добавлена логика/ограничения. Дописанные новые - врядли будут иметь ограничения. Хотя дописывать? ... Упомянутые 'cit'- бандиты все одно являются рудиментами от вырезенной локации и ограничений для подобного спавна также не имеют. --/ Artos Добавлено через 37 мин.: Понял, теперь следующее, если удалить с локации смарты, то нпс, заспавненные на ней будут просто бродить везде, где позволяет сетка и реагировать на противника согласно своей стандартной логике? Если удалить смарты с локации, то как минимум потребуется скорректировать немало логики и скриптов ... Но НПС, заспавненные на локации, если им не прописано '[smart_terrains] none = true' - не будут бродить, а проследуют на те локации, где им найдется работенка. Конечно строго по сетке и отвлекаясь на опасности иль подобное. Добавлено через 21 мин.: Хорошо, тогда как сделать привязку нпс к определённой локации? Хм, ... привязать его к какому-либо смарту/гулагу на какой-либо локации. :-) И навязать ему работу из этого смарта/гулага (хоть на другой локации). Работа должна быть по координатам для нужной локации (не обязательно одной с гулагом ее дающим). --/ Artos Изменено 12 Сентября 2011 пользователем Artos Лучше спросить глупость, чем её совершить. Поделиться этим сообщением Ссылка на сообщение
лнкс 0 Опубликовано 23 Сентября 2011 Можно ли как-то отключить удаление лута из инвентаря трупов, путём редактирования death_manager.script? Лучше спросить глупость, чем её совершить. Поделиться этим сообщением Ссылка на сообщение
лнкс 0 Опубликовано 23 Сентября 2011 Удаляются ножи, пда, фонарики,детекторы и прочее. Меня интересует отмена этого удаления. Теперь понятно? Лучше спросить глупость, чем её совершить. Поделиться этим сообщением Ссылка на сообщение
лнкс 0 Опубликовано 7 Января 2012 Всем доброго времени суток, с прошедшими праздниками и наступившим Рождеством. Возник такой вопрос: что отвечает за непереход некоторых NPC в offline? Объясняю: в SoC на кордоне новички с Волком переходят в offline, а солдатня на блокпосте - нет. Сравнил их секции в All.spawn и заметил разницу в флагах. Причина только в этом? Лучше спросить глупость, чем её совершить. Поделиться этим сообщением Ссылка на сообщение
лнкс 0 Опубликовано 7 Января 2012 Попробую. Ещё вопрос: заспавнил рюкзак [10279] ; cse_abstract properties section_name = physic_object name = predbannik_physic_object_0108 position = -425.600646972656,12.9063091278076,-149.377365112305 direction = 0,-1.92239999771118,0 ; cse_alife_object properties game_vertex_id = 3908 distance = 0 level_vertex_id = 290047 object_flags = 0xffffff3a ; cse_visual properties visual_name = equipments\item_rukzak ; cse_ph_skeleton properties ; cse_alife_object_physic properties physic_type = 0x3 mass = 1000 fixed_bones = link , сделал из него тайник [10280] ; cse_abstract properties section_name = inventory_box name = predbannik_inventory_box_0008 position = -425.600646972656,12.9063091278076,-149.377365112305 direction = 0,-1.92239999771118,0 ; cse_alife_object properties game_vertex_id = 3908 distance = 35 level_vertex_id = 290047 object_flags = 0xffffff3b custom_data = <<END [spawn] mag_30_7.62x39_fmj = 10 END ; cse_visual properties visual_name = equipments\item_rukzak , забираю всё из тайника и вижу как один из рюкзачков плавно поднимается примерно на метр. Как это можно исправить? Лучше спросить глупость, чем её совершить. Поделиться этим сообщением Ссылка на сообщение