Dennis_Chikin 3 658 Опубликовано 24 Апреля 2014 Поделиться Опубликовано 24 Апреля 2014 (изменено) "Что у нее внутри, и как это сделать лучше". Для тех, кто уже разбирается в скриптах, конфигах, текстурах и "других страшных словах" ©, и имеет желание и время действительно делать их лучше.См. подробности в первом посте.Тема НЕ является ни столом заказов, ни службой техподдержки, ни справочным бюро. Изменено 28 Апреля 2014 пользователем Dennis_Chikin 2 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Arhara 32 Опубликовано 23 Февраля 2010 Поделиться Опубликовано 23 Февраля 2010 (изменено) sapsan, Часть из них просто запихнута в кисель от Сяка. Они мне важны только как дин. аномалии, и они отлично работают без прописи в алл спавне и в скриптах. За исключением тех, что я отстучал в посту к Shadowman. У них есть только конфиг и пропись в амк_аномал (в табле и по локациям). Более - ничего - ни СИДов, ни регистрации... этого и не надобно. Единственный недостаток - в большинстве из них нельзя варить арты - опять же - кроме тех, что я говорил Shadowman. Но - влёгкую можно сделать - и без прописи в скриптах - достаточно просто запихнуть их в алл спавн, что я сейчас и сделал с НО_грави - подобрал правильный конфиг - и вуаля. Одно но - эта аномалия - статичекая пока - ей нельзя поменять класс - иначе. она теряет свойства. а если сделать ей сид и прописать в скрипты - она будет динамической. но будет баг - как до моей правки - все аномалии алл спавна будут статикой... Вот где дилема. А так - существенно разгрузил память и количество безлоговых вылетов - но - в правке ещё не всё подправнено - из амк_аномал - надо полностью убрать но_грави - она там не нужна - и будет всё вообще ок. Изменено 23 Февраля 2010 пользователем Arhara Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
sapsan 336 Опубликовано 23 Февраля 2010 Поделиться Опубликовано 23 Февраля 2010 (изменено) Arhara, вот исправление ЧУ для случая переходов ГГ между локациями на которых есть или нету ЧУ (например над землёй и под землёй). Или, если ты вносил правки в таблицы файла, то замени этот кусок: -- неписи становятся в стойку с выставленным стволом if timeh == horror_begin_time.h and timem >= horror_begin_time.m and timem <= 59 then if panic_minute ~= timem then panic_minute = timem local npc, npc_position, position for k, v in pairs (db.storage) do npc = level.object_by_id(k) if npc and npc:alive() and IsStalker(npc) and tabl_npc_ignore[npc:name()] ~= true then npc_position = npc:position() position = vector():set(npc_position.x + math.random(-5,5), npc_position.y, npc_position.z + math.random(-5,5)) state_mgr.set_state(npc, "hide_s_right", nil, nil, {look_position = position}) end end --[[for k, v in pairs (db.storage) do npc = level.object_by_id(k) if npc and npc:alive() and IsStalker(npc) and tabl_npc_ignore[npc:name()] ~= true then state_mgr.set_state(npc, "hide_s_right") end end]] end end --сообщение о старте if timeh == horror_begin_time.h and timem == (horror_begin_time.m + 1) then if db.actor:dont_has_info("random_pre_news") then db.actor:give_info_portion("random_pre_news") random_news_number = math.random(table.getn(tabl_mess_begin)) presoobj() end end --включение установки или её сбой if (timeh == horror_time.h and timem == horror_time.m) then if db.actor:dont_has_info("horror") then game_reloaded = false db.actor:give_info_portion("horror") if math.random(2) == 2 then --удача запуска 50/50 local level_name = level.name() local level_info = tabl_horror_by_level[level_name] if level_info then level.add_cam_effector("camera_effects\\earthquake.anm", 77777775, true, "") level.add_pp_effector("dead_zone.ppe", 77777774, false) level.add_pp_effector("nano.ppe", 77777773, false) level.add_pp_effector("nightvision.ppe", 77777772, false) level.add_pp_effector("psy_antenna.ppe", 77777771, true, "") effects() news() horrorspawn(level_name) hit_actor(level_name) spawn_phantom() horror_sound() local npc, npc_position for k, v in pairs (db.storage) do npc = level.object_by_id(k) if npc and npc:alive() and IsStalker(npc) and tabl_npc_ignore[npc:name()] ~= true then state_mgr.set_state(npc, "idle", nil, nil, nil, {animation = true}) end end random_reaction() end else -- неудачный запуск db.actor:give_info_portion("horror_fail") presoobjFAIL() end --meceniy_dinrad.disable() -- может это делать перед выбросом ? --meceniy_dinrad.level_spawn() -- может это делать после выброса ? end end -- перезапуск спецэффектов в случае перезапуска игры if timeh == horror_time.h and timem >= horror_time.m and timem < horror_end_time.m and game_reloaded and db.actor:dont_has_info("horror_fail") then game_reloaded = false level.add_cam_effector("camera_effects\\earthquake.anm", 77777775, true, "") level.add_pp_effector("psy_antenna.ppe", 77777771, true, "") horror_sound() end --окончание ЧУ if (timeh == horror_end_time.h and timem == horror_end_time.m) then if db.actor:dont_has_info("horror_time_end") then db.actor:give_info_portion("horror_time_end") if db.actor:dont_has_info("horror_fail") then level.add_pp_effector ("teleport.ppe", 77777777, false) level.remove_pp_effector(77777774) level.remove_pp_effector(77777773) level.remove_pp_effector(77777772) level.remove_pp_effector(77777771) level.remove_pp_effector(77777776) level.remove_cam_effector(77777775) remove_horror_mutant() end end end на этот: -- неписи становятся в стойку с выставленным стволом if timeh == horror_begin_time.h and timem >= horror_begin_time.m and timem <= 59 then if panic_minute ~= timem then panic_minute = timem -- тревожим неписей только на локациях, где есть ЧУ if tabl_horror_by_level[level.name()] then local npc, npc_position, position for k, v in pairs (db.storage) do npc = level.object_by_id(k) if npc and npc:alive() and IsStalker(npc) and tabl_npc_ignore[npc:name()] ~= true then npc_position = npc:position() position = vector():set(npc_position.x + math.random(-5,5), npc_position.y, npc_position.z + math.random(-5,5)) state_mgr.set_state(npc, "hide_s_right", nil, nil, {look_position = position}) end end end end end --сообщение о старте if timeh == horror_begin_time.h and timem == (horror_begin_time.m + 1) then if db.actor:dont_has_info("random_pre_news") then db.actor:give_info_portion("random_pre_news") random_news_number = math.random(table.getn(tabl_mess_begin)) presoobj() end end --включение установки или её сбой if (timeh == horror_time.h and timem == horror_time.m) then if db.actor:dont_has_info("horror") then game_reloaded = false db.actor:give_info_portion("horror") -- расслабляем неписей только на локациях, где есть ЧУ if tabl_horror_by_level[level.name()] then local npc, npc_position for k, v in pairs (db.storage) do npc = level.object_by_id(k) if npc and npc:alive() and IsStalker(npc) and tabl_npc_ignore[npc:name()] ~= true then state_mgr.set_state(npc, "idle", nil, nil, nil, {animation = true}) end end end if math.random(2) == 2 then --удача запуска 50/50 local level_name = level.name() local level_info = tabl_horror_by_level[level_name] if level_info then level.add_cam_effector("camera_effects\\earthquake.anm", 77777775, true, "") level.add_pp_effector("dead_zone.ppe", 77777774, false) level.add_pp_effector("nano.ppe", 77777773, false) level.add_pp_effector("nightvision.ppe", 77777772, false) level.add_pp_effector("psy_antenna.ppe", 77777771, true, "") effects() news() horrorspawn(level_name) hit_actor(level_name) spawn_phantom() horror_sound() random_reaction() end else -- неудачный запуск db.actor:give_info_portion("horror_fail") presoobjFAIL() end --meceniy_dinrad.disable() -- может это делать перед выбросом ? --meceniy_dinrad.level_spawn() -- может это делать после выброса ? end end -- перезапуск спецэффектов в случае перезапуска игры if timeh == horror_time.h and timem >= horror_time.m and timem < horror_end_time.m and game_reloaded and db.actor:dont_has_info("horror_fail") then game_reloaded = false -- возвращаем спецэффекты только на локациях, где есть ЧУ if tabl_horror_by_level[level.name()] then level.add_cam_effector("camera_effects\\earthquake.anm", 77777775, true, "") level.add_pp_effector("psy_antenna.ppe", 77777771, true, "") horror_sound() end end --окончание ЧУ if (timeh == horror_end_time.h and timem == horror_end_time.m) then if db.actor:dont_has_info("horror_time_end") then db.actor:give_info_portion("horror_time_end") if db.actor:dont_has_info("horror_fail") then -- вспышка окончания ЧУ только на локациях, где есть ЧУ if tabl_horror_by_level[level.name()] then level.add_pp_effector ("teleport.ppe", 77777777, false) end level.remove_pp_effector(77777774) level.remove_pp_effector(77777773) level.remove_pp_effector(77777772) level.remove_pp_effector(77777771) level.remove_pp_effector(77777776) level.remove_cam_effector(77777775) remove_horror_mutant() end end end Изменения: - неписи тревожатся только на локациях, где возможен ЧУ; - неписи расслабляются после тревоги только на локациях, где возможен ЧУ; - спецэффекты ЧУ восстанавливаются только на локациях, где возможен ЧУ; - вспышка окончания ЧУ появляется только на локациях, где возможен ЧУ; Изменено 23 Февраля 2010 пользователем sapsan Ссылка на комментарий
Monnoroch 6 Опубликовано 25 Февраля 2010 Поделиться Опубликовано 25 Февраля 2010 Ray, он это делает за 150 метров от себя Да и вообще не обосновано... Добавлено через 3 мин.: Ray, да ну,глупо... Ссылка на комментарий
LithOS 0 Опубликовано 25 Февраля 2010 Поделиться Опубликовано 25 Февраля 2010 (изменено) Monnoroch, LithOS, Ты ГГ в диалогах как сообщать будешь,какой арт требуется? А как я, по-твоему, ГГ сообщаю, какой из рандомных тайников Валерича ему требуется, в аддоне? Так же, как Костя делал... Кстати, по поводу движка - ты про билд 3120 или про ЗП? Во-во. А то я было удивился, потом про билд вспомнил... Да, как раз будет повод для начала работы - вместе со сменой двигла. Изменено 25 Февраля 2010 пользователем LithOS Ничто не истина. Все дозволено. Ссылка на комментарий
Monnoroch 6 Опубликовано 25 Февраля 2010 Поделиться Опубликовано 25 Февраля 2010 LithOS, билд-билд.под ЗП не получится перенести многое так просто - тот же сюжет. Добавлено через 2 мин.: Ray, просто ГГ не сам создает,он использует капсулу - тот же артефакт.а Сахар сидит себе в бункере и сидит... Ссылка на комментарий
Monnoroch 6 Опубликовано 25 Февраля 2010 Поделиться Опубликовано 25 Февраля 2010 (изменено) Ray, Ты ошибаешься.Они не соль под движок адаптируют,а движок под соль Тем более,что он близок к движку ТЧ. А Архара - ну уж как хочет. Не захочет Архара - кто другой возьмет и адаптирует. Изменено 25 Февраля 2010 пользователем Monnoroch Ссылка на комментарий
Malandrinus 615 Опубликовано 25 Февраля 2010 Поделиться Опубликовано 25 Февраля 2010 Т.е нет разницы,если я 1 раз определю obj = my_class() и 100 раз вызову obj:any_func() или если я 100 раз вызову my_class():any_func() Разница есть, если my_class() создаёт новый объект. В этом случае self будет всякий раз новый. Добавлю свои пять копеек во флейм. Поддерживаю общее мнение насчёт невозможности совершенно новой разработки. Призывать мне верить не буду, в качестве аргумента могу предложить взглянуть на заглавную страницу нашего уважаемого портала в раздел "новости". Ещё могу предложить вспомнить о судьбе Netscape Navigator-а (если о таком кто-то ещё помнит). Его помнится на каком-то этапе тоже решили с нуля переписать. Байтораздирающее зрелище было =) По поводу переноса на новый движок. По-моему - это почти нереально. Со скриптами будет проблема в основном только с окошечной частью. Остальное вроде как не сильно изменилось. Но это же не всё. Есть ещё объекты из all.spawn, модели, анимации? Фактически - это будет новая разработка (см. выше). Однако, что вам на самом деле не хватает - это технического средства координации усилий. Я имею в виду кодовый репозитарий. Полно же халявных хостингов для того-же SVN, и пользоваться этим совсем не сложно. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Monnoroch 6 Опубликовано 25 Февраля 2010 Поделиться Опубликовано 25 Февраля 2010 (изменено) malandrinus, Так соль уже нормально запускают на новом движке.Да,есть нюансы,типа полдня каждую загрузку,но это можно обойти по принципу сна Ну или еще как. С такими замашками лучше будет купить у ПЫС этот билд лицензионно и сделать "тот самый сталкер" и издать самопально Потому как столько работы никто не осилит задаром - жить то как то нужно. Изменено 25 Февраля 2010 пользователем Monnoroch Ссылка на комментарий
Malandrinus 615 Опубликовано 25 Февраля 2010 Поделиться Опубликовано 25 Февраля 2010 (изменено) Что-то табличка та с константами, перерисованными из луа_хелп вызывает вылеты. До определённого момента класса clsid не существует. В частности, его ещё нет в самом класс-регистраторе. Если проблема в этом, то надо добиться того, чтобы код инициализации сработал позднее. Добавил: Да, точно. Причина именно в этом. Вероятно поэтому в ТЧ функции типа IsMonster и реализованы так убого. В ЗП эту проблему решили как положено: код инициализации помещён в start_game_callback. Срабатывает не сразу, поэтому clsid уже существует. Изменено 26 Февраля 2010 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
sapsan 336 Опубликовано 26 Февраля 2010 Поделиться Опубликовано 26 Февраля 2010 Shadowman, malandrinus, табличка работает нормально. Она у меня не работала только потому, что я её не проверял - написал и выложил. Методом научного втыка вычислил и закомментировал две аномалии (--[clsid.zone_buzz_s] = true, --[clsid.zone_ice] = true,), после чего всё заработало и выброс пережил нормально на Баре... Под правки Архары по аномалиям нужно подрезать таблицу. Будет время - сделаю. Но введение таблицы и единую функцию проверки можно отложить до "после выхода следующего дополнения" так как у нас с Архарой возникли разногласия по этому поводу. Вот наша переписка: sapsan: По аномалиям: Может я не всё понял, но мне показалось что ты не совсем понял суть последней правки. Она отвечает за: - распознавание неписями аномалий при поиске артефактов (они в них теперь не полезут); - отключение/включение аномалий после начала/окончания выброса (раньше новые аномалии не убирались и, как следствие, не меняли своё мместо положения); Думаю, что в таблице классов аномалий не стоит больше ничего комментировать (разве что определённые аномалии, которых совсем нет в игре) иначе будут гибнуть неписи в аномалиях с артами и закомментированные аномалии не будут менять местоположение после выброса. Если я ошибся в твоём непонимании правки - хорошо Arhara: Не заметил - потому как у меня на баре всё ок. :ny_ph34r_1: Меня более мало интересуют дин. аномалии - в моём понятии и неоднократных пробах - им не нужны не прописи, ни СИДы, ни прочее. Всё и так работает без лишних заморочек. Интересен только момент обхождения неписями аномалий - не смотрел, но думаю, это достаточно лишь прописать в неписях по группировкам - по подобию монстров.... П.С - а нужна ли табла по классам аномалий вообще???? sapsan: Смотри. Раньше проверка на то, что объект - это аномалия, делался так: if (sobj:clsid()>172 and sobj:clsid()<180) or sobj:clsid()==clsid.zone_electra_s or (sobj:clsid()>18019 and sobj:clsid()<18024) or sobj:clsid()==clsid.nogravity_zone then Теперь это делается так: if is_anomaly(sobj:clsid()) then Таблица с классами используется в функции is_anomaly() вместо сравнений. И никуда от этого не деться - либо по-старому - сравнениями, либо по-новому - табличкой. Задача одна и та же, но решение разное. Вообще удалять таблицу (равнозачно удалению проверки) нельзя - не будет этих динамических аномалий вообще (не будут они менять место после выброса) и неписи будут в них лезть за артефактами. Проверка эта как раз и участвует в коде, который удаляет все аномалии в начале выброса, а потом спавнит их в новых случайных местах. Своей правкой я ничего в логике не изменил, я только подрихтовал код, вынес саму проверку в одну функцию с единой таблицей и дополнил список новыми клас_ид аномалий. Ведь добавлял ты новые аномалии в таблицы спавна. Ну перенёс ты их в олл.спавн, но ведь из игры они никуда не делись и класс_ид у них тоже остался. Просто регистрировать их уже не нужно (если я правильно понял), но вот сама игра должна и дальше с ними "работать", а для этого нужна эта проверка. Arhara: У новых дин. аномалий нет класс_ид. Нет вообще ничего, кроме конфига, а у части - нет даже и этого. Зачем их вносить куда-то ещё, если и так всё работает? sapsan: Ты хочешь сказать, что убрал их и в lua_help.script из C++ class clsid {? Если да - ты проверял, что они меняют место после выброса ? На основе проверки на sobj:clsid() осуществлялась перестановка аномалий и запрет на обращение внимание неписями на арты в аномалиях... Arhara: Конечно, проверял. Более того - уже давно вышла правка - а в ней - я убрал им СИДы, регистрацию, луа_хелп и прочую хренотень. Это только провацировало вылеты. :ny_ph34r_1: :ny_ph34r_1: sapsan: Посмотрел правку - там ты убрал класс_ид только у новых аномалий... Они пропадают сразу после начала выброса ? А то я не тестировал с убранными класс_ид у аномалий. Как по мне, то с моей правкой или без неё, но с удалёнными класс_ид из луа_хелп новые аномалии не будут отключатся с началом выброса и перемещатся после него. Если удаляются и перемещаются - то я чего-то не понимаю... Может тогда нужно начать НИ, чтобы они не удалялись и не перемещались ? Так как у уже заспавненных аномалий сохранились класс_ид... Arhara: В том то всё и дело, что они работают и не вызывают багов. А при прописке - наоборот... Arhara: Нет, я оставил проверку на аномалии от АМК - так как было, убрав только свои, новые и оставил их в табле и по локам, изменив конфиги самих аномалий. Более - ничего не менял. sapsan: И в новой игре твои новые аномали при начале выброса пропадают ? Без проверок, которые ты убрал, код удаления аномалий в начале выброса их не распознает и не удалит... Также и с неписями... P.S. Будешь выкладывать следующее обновление или патч - выложи его как тестовый... Не хорошие у меня мысли по поводу новых аномалий без проверок в коде Помнишь как игроки жаловались, что после выброса новые аномалии не пропадали и не перемещались? Это как раз из-за отсутствия тогда проверок... Arhara: Э.. брат... Дык я уже давно выложил это в народ - отзывы сугубо положительные - всё спавнится и удаляется корректно. Исчезли глюки со статическими аномалиями, меньше жалоб на вылеты по памяти... Но - там вариант неокончательный - ещё присутствует но_грави, которую надо убрать, что я и сделал. sapsan: В народ ты выложил правку, в которой отключены в луа_хелп и амк_аномс только новые аномалии, а не все. Да и проверки остались по старым аномалиям. Вот когда все аномалии отключишь и проверки уберёшь... Arhara: Я говорил только о новых. Старые - остались как были. sapsan: Поживём - увидим. По-моему, сейчас (без моей, но с твоей правкой) новые аномалии не будут менять место положения после выброса. Arhara: Я протестил - ничего просто так не выкладываю :ny_ph34r_1: function turn_off_all() for i=0,65534 do local sobj = alife():object(i) if sobj then if (sobj:clsid()>172 and sobj:clsid()<180) or sobj:clsid()==clsid.zone_electra_s then local map = alife():level_name(game_graph():vertex(sobj.m_game_vertex_id):level_id()) if not check_exclusion(sobj,map) then local status=get_anomaly_status(sobj) if status=="on" then set_anomaly_status(sobj,"del") end end end end end end Именно она заставила меня так долго припираться с Архарой Знающие, что скажите на отсутствие проверки новых аномалий в ней ? Если Архара прав, то каким образом новые аномалии отключаются в начале выброса и меняют место после него ? Ссылка на комментарий
lsclon 527 Опубликовано 26 Февраля 2010 Поделиться Опубликовано 26 Февраля 2010 (изменено) sapsan На сколько я поняла, всё очень просто. Новые аномалии имеют класс старых аномалий. Например аномалия фонтан, это та-же самая zharka_statik, только со своими партиклами. А туман и завеса, сделаны на основе mosquito bald. А начальная функция, отвечающая за спавн и уборку аномалий, это amk_anoms.bind. Если эта функция прописана в конфиге зоны, то зона будет спавнится и убираться. И как сказал Архара, что-бы аномалия была динамической, класс должен быть - ZS_... ------------------------ Да, с детектором получается лажа. Детектор путает значки у аномалий с одинаковым классом. Я думаю, что-бы разобраться с новыми аномалиями, нужно обратить внимание, как сделана снежка у АМК, которую они ввели в игру позже остальных. Изменено 26 Февраля 2010 пользователем lsclon Вообще-то я белая и пушистая... Ссылка на комментарий
sapsan 336 Опубликовано 26 Февраля 2010 Поделиться Опубликовано 26 Февраля 2010 (изменено) lsclon, мне тоже эта мысль пришла, но как тогда с детекторами ? За уборку аномалий во время выброса отвечает функция turn_off_all(), которую я указал выше. И, как я теперь понял, она будет работать для новых аномалий, так как класс_ид у них равен класс_ид каких-то старых. Но в чём смысл делать близнецов? Если смысл в оптимизации - тогда почему бы и старые аномалии не свести в одну ? Опять же - по какому признаку детекторы различают аномалии ? Изменено 26 Февраля 2010 пользователем sapsan Ссылка на комментарий
lsclon 527 Опубликовано 26 Февраля 2010 Поделиться Опубликовано 26 Февраля 2010 (изменено) Эту функцию я понимаю так: function turn_off_all() for i=0,65534 do local sobj = alife():object(i) -- поиск любых уже заспавненых объектов if (sobj:clsid()>172 and sobj:clsid()<180) or sobj:clsid()==clsid.zone_electra_s -- выборка из найденых - определённых объектов if not check_exclusion(sobj,map) then -- исключение из списка эксклюзивных обьектов local status=get_anomaly_status(sobj) -- ????????????? что это за объекты? - это не объекты с clsid(), написанными выше, а объекты, имеющие статус on if status=="on" then set_anomaly_status(sobj,"del") -- применение удаления ----------------------------- Вообще-то это объекты, которые берутся из функции get_anomaly_status, а уже потом, к объектам с класс_ид, имеющим статус on, и к объектам, взятым из функции get_anomaly_status, имеющих также on, применяется функция set_anomaly_status. Так что, нужно(наверно) разбираться с функцией get_anomaly_status. Изменено 26 Февраля 2010 пользователем lsclon Вообще-то я белая и пушистая... Ссылка на комментарий
sapsan 336 Опубликовано 26 Февраля 2010 Поделиться Опубликовано 26 Февраля 2010 (изменено) lsclon, это объекты со статусом "on" и с класс_ид, который прошел проверку выше (172...180). lsclon, берутся из функции get_anomaly_status Нет они берутся с помощью local sobj = alife():object(i), потом проходят проверку на класс_ид, а только потом уже и на статус... malandrinus, благодарю. Ну теперь то всё ясно . Если что - ковырять детекторы... Изменено 26 Февраля 2010 пользователем sapsan Ссылка на комментарий
Malandrinus 615 Опубликовано 26 Февраля 2010 Поделиться Опубликовано 26 Февраля 2010 Вообще-то объекты вовсе не обязательно различать по классу. Есть ещё куча способов отличать их друг от друга. Если классифицировать способы "по убыванию общности", то получится примерно так: 1. самое глобальное различие - по классу 2. менее глобально - по секции (с одним классом могут быть разные секции) 3. ещё менее глобально - по story_id или по id где-то между 2 и 3 лежит различие по наличию инфопоршена. Все прочие способы классификации сами уже классификации не поддаются =) Полагаю, если надо как-то различать аномалии, то в данном случае надо ввести дополнительное различие по секции или только по секции вместо классов. Не так уж много этих аномалий. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Shadowman 939 Опубликовано 27 Февраля 2010 Поделиться Опубликовано 27 Февраля 2010 Из этого обсуждения я сделал для себя два вывода: - по классу аномалии отличить можно, но очень приблизительно, только явно их отличить от других объектов в игре - чтобы точно определить тип аномалии и ее название (для детектора, для "варки") - нужно пользоваться названием секции. Вот от этого и будем плясать Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
Ray 14 Опубликовано 27 Февраля 2010 Поделиться Опубликовано 27 Февраля 2010 (изменено) Вчера на работе получилось немного уделить время задаче по настройке таблиц переодевания НПС для использования в схемах, которые Monnoroch взял из АМК-скриптов и адаптировал для своего аддона (раз пошло для аддона - пойдет и для Соли). Я начал с того, что из файла outfit.ltx стал вытаскивать названия всех костюмов. Перебрал где-то две трети файла и уже получил 500 костюмов. А еще есть файл unique_items.ltx, где тоже немало (и некоторые другие). Я так подозреваю, что общее количество костюмов будет около 1000. Честно говоря слегка ..........., я такого не ожидал. Короче говоря таблицы получатся недетскаи. Но это в принципе не проблема. Но вот терзают смутнные сомнения надо ли все броники включать в эти таблицы? Строгое предупреждение от модератора n6260 Я тоже [твое удаленное слово] с вашего лексикона. Добавлено через 35 мин.: Получается для каждого вида броника 18 конфигов. Один - базовый, 8 для броников с ПНВ, один для укрепленного и 8 для уклепленных с ПНВ. Так вот по идее их надо все в таблицы вкидывать, верно? Изменено 27 Февраля 2010 пользователем n6260 AMD Ryzen 5 3600 Box, MB Asus Prime B450-Plus, 2x8 Gb Kingston DDR4-3200, MSI GeForce GTX 1060 3GB, SSD Samsung 840 EVO 120GB, Kingston A400 120 Gb, Samsung HD103SJ SATA2, Samsung HD502HJ SATA2 Ссылка на комментарий
Shadowman 939 Опубликовано 27 Февраля 2010 Поделиться Опубликовано 27 Февраля 2010 Ray, о каких таблицах речь? Для переодевания? Зачем?? Там важен только визуал - входящий и исходящий: т.е. какой на какой меняем. Все навороты в конфигах сделаны для ГГ, для неписей нет разницы, есть в бронике ПНВ, укрелен он или еще чего. Нужно разраничить только общие типы и принадлежности к группировкам, и все. Добавлено через 7 мин.: Сделать 1)Рецепты сложные - из 5-7 ингридиентов. 2)Важен порядок. Monnoroch, здорово конечно. Но засесть сейчас еще раз переписывать то, что уже практически сделал - неее, спасибо Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
Ray 14 Опубликовано 27 Февраля 2010 Поделиться Опубликовано 27 Февраля 2010 (изменено) Shadowman, визуал то это хорошо, но надо задать принадлежность броников к визуалам. В скриптах АМК для этого есть такая таблица aOutfitsList = { ["novice_outfit"] = "novice", ["bandit_outfit"] = "bandit", ["killer_outfit"] = "killer", ["monolit_outfit"] = "monolit", ["specops_outfit"] = "specops", ["military_outfit"] = "military", ["stalker_outfit"] = "stalker", ["scientific_outfit"] = "nauchniy", ["exo_outfit"] = "exo", ["svoboda_light_outfit"] = "svoboda", ["svoboda_heavy_outfit"] = "svoboda", ["dolg_outfit"] = "dolg", ["dolg_scientific_outfit"] = "nauchniy", ["ecolog_outfit"] = "ecolog", ["protection_outfit"] = "ecolog" } Но в ней только костюмы оригинала. Надо ведь сюда запихнуть все остальные, в том числе и с ПНВ и укрепленные. Изменено 27 Февраля 2010 пользователем Ray AMD Ryzen 5 3600 Box, MB Asus Prime B450-Plus, 2x8 Gb Kingston DDR4-3200, MSI GeForce GTX 1060 3GB, SSD Samsung 840 EVO 120GB, Kingston A400 120 Gb, Samsung HD103SJ SATA2, Samsung HD502HJ SATA2 Ссылка на комментарий
_Призрак_ 11 Опубликовано 27 Февраля 2010 Поделиться Опубликовано 27 Февраля 2010 Ray Укрепленные костюмы, и костюмы с ПНВ в игре никто не использует (кроме ГГ) поэтому включать в функцию броники с ПНВ и укрепленные нет смысла Freedom Ссылка на комментарий
Рекомендуемые сообщения