Это популярное сообщение. Dennis_Chikin 3 665 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-847221
Полтергейст 38 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 Призрак Можно ли узнать попал ли актор в какой нибудь спейс? А в чём проблема? Пишем: local actor_v_zone = npc_in_zone(db.actor, zone) где zone - это restrictor, который надо проверить. Если надо узнать, входит ли actor вообще хоть в какой-нибудь restrictor, то для этого надо перешивать class_registrator.script и возиться с биндерами, если надо - напишу готовый вариант, сам только что сделал такое у себя. Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-572986
Garry_Galler 7 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 (изменено) _Призрак_ У разных категорий зон во первых отличаются названия: вот например список зон из стораджа одного NPC bar_arena_restrictor,bar_dolg_bunker_restrictor,camp_fire_0000,camp_fire_0001,ca mp_fire_0002,camp_fire_0003,camp_fire_0004,camp_fire_0005,mil_camp_fire_res_0002 Как видишь тут не так уж сложно отделить парсингом строки рестрикторы от аномалий. Во вторых, никто не отменял возможность применить к юзердате зоны метод section() (или section_name()) и узнать что это - smart_terrain, space_restrictor или zone_xxx (аномалия). ---------------------------------------------- Полтергейст Не npc_in_zone(db.actor, zone), а utils.npc_in_zone(db.actor, db.zone_by_name[sZoneName]) Изменено 5 Марта 2011 пользователем Garry_Galler Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-572997
Полтергейст 38 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 Не npc_in_zone(db.actor, zone), а utils.npc_in_zone(db.actor, db.zone_by_name[sZoneName]) Это одно и то же. При вызове npc_in_zone(db.actor, zone) zone - клиентский объект restrictor'а, а не его имя. При таком обращении db.zone_by_name[sZoneName] мы как раз получим этот объект из таблицы. Если "слепить", то получится так: local zone = db.zone_by_name[sZoneName] local actor_v_zone = npc_in_zone(db.actor, zone) А если нам нужно имя restrictor'а, в котором находится actor, то local inside_zones = {} for name, zone in pairs(db.zone_by_name) do if npc_in_zone(db.actor, zone) == true then inside_zones[name] = true else inside_zones[name] = false end Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573028
Garry_Galler 7 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 (изменено) Полтергейст Мое уточнение было сугубо практическим: если нужно узнать находится ли ГГ в определенном рестрикторе, то обратиться к его имени (которое имеется в allspawn), куда проще, чем получить его объект.(разработчики сталкера, - если глянуть скрипты, - делали именно так). При переборе таблицы db.zone_by_name уже не имеет значения данный нюанс, так как по любому в переменных-итераторах key, value будут и имя и юзердата зоны. ЗЫ:npc_in_zone() это же не глобальная функция из _g.script , а ты уже вторично забываешь указать модуля, в котором она находится. Это тоже было причиной моего уточнения. -------------------------------- Кстати забыл добавить: смарт терейны находятся в табличке db.smart_terrain_by_id - отдельно от рестрикторов. Изменено 5 Марта 2011 пользователем Garry_Galler Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573036
Полтергейст 38 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 ЗЫ:npc_in_zone() это же не глобальная функция из _g.script , а ты уже вторично забываешь указать модуля, в котором она находится. У меня эта функция как раз глобальная из _g.script (перенёс для удобства), вот и написал по привычке. смарт терейны находятся в табличке db.smart_terrain_by_id - отдельно от рестрикторов В таблице рестрикторов они тоже есть - в биндере смарта есть вызов db.add_zone() Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573118
FLIKER 0 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 _zero_cool_, Может кинешь логику с эскепа? Жить – значит делать вещи, а не приобретать их. Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573233
_Призрак_ 12 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 (изменено) А вот еще какой у меня есть вопрос. Почему иногда игра вылетает вот с таким логом?: [error]Description : ...:\stalker Зов Припяти\gamedata\scripts\_sdata.script:99: attempt to index field '?' (a nil value) 99 строка скрипта _сдата: local test = db.storage[zone:id()].active_scheme Притом я не могу понять с какого ляда это происходит. Объект всегда в онлайне Изменено 6 Марта 2011 пользователем _Призрак_ Freedom Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573234
Garry_Galler 7 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 _Призрак_ Тут все предельно просто- ты к обратился к полю db.storage[zone:id()], которого в таблице нет. Поэтому перед тем как обратиться к какому нибудь табличному полю объекта всегда проверяй и существование объекта и поля: if zone and db.storage[zone:id()] and db.storage[zone:id()].active_scheme then Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573251
Полтергейст 38 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 Хех, только что нашёл решение проблемы обхода аномалий. Просто им нужно присваивать restrictor_type = 2 с помощью net_packet'ов при спавне. Тогда они автоматически добавляются движком в рестрикторы ко всем npc. _Призрак_ Перед этой строкой напишите так: if db.storage[zone:id()] == nil then db.storage[zone:id()] = {} end Вылет должен исчезнуть. Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573281
PGU_tk 9 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 Monnoroch, Можно узнать Сколько патрон в Стволе Узнать их секцию И так ,по мелочи Не более Вот у меня вопрос - как узнать секцию? https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573300
_Призрак_ 12 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 1)Тип патронов в стволе: Аргумент на входе - номер слота оружия function GetAmmoType(iSlot) local gItem = db.actor:item_in_slot(iSlot) if gItem then local seObj = alife():object(gItem:id()) local packet = net_packet() seObj:STATE_Write(packet) local iSize = packet:w_tell() packet:r_seek(iSize - 1) local iAmmoType = packet:r_u8() return iAmmoType --/> (0|1|2|...) end end добавить это: Код: --/ определяем имя секции патронов (ammo_name) по типу (ammo_type) для конкретного оружия (sSection) function Get_AmmoSection(sSection, iAmmoType) --/< ammo_type (0|1|2|...) local tAmmoList = fReadFromIni(system_ini(), sSection, "ammo_class", {}, "table", ",") local iAmmo = 1 + (iAmmoType or 0) return tAmmoList[iAmmo] --/> "ammo_section" end - то получим имя/название патрона в стволе. 1 Freedom Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573303
Полтергейст 38 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 Прочитать параметр ammo_class в секции пушки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573305
@"StreloK" 2 Опубликовано 7 Марта 2011 Поделиться Опубликовано 7 Марта 2011 А может кто подсказать-можно-ли заставить НПС стрелять в определённую цель (БТР) ? Prefiero morir de pie, que vivir siempre arrodillado. Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573545
Disord 2 Опубликовано 7 Марта 2011 Поделиться Опубликовано 7 Марта 2011 (изменено) В общем, вопрос. Хочу повесить на нового НПС типовые задания (Мне нужна работа. Есть что на примете? и т.д.). Зашёл в task_manager.script, внёс своего НПС в две таблицы: parent_by_story: [642] = "stariy", story_by_parent: stariy = 642, Далее, прописал НПС диалоги: tm_stariy_dialog: <dialog id="tm_stariy_dialog" priority="-1"> <init_func>task_manager.init_stariy_task_dialog</init_func> </dialog> tm_stariy_reward: <dialog id="tm_stariy_reward" priority="0"> <init_func>task_manager.init_stariy_reward_dialog</init_func> <precondition>task_manager.has_active_vendor_task</precondition> </dialog> К этим диалогам функции: function init_stariy_task_dialog(dlg) get_random_task():init_task_dialog(dlg, "stariy") end function init_stariy_reward_dialog(dlg) get_random_task():init_reward_dialog(dlg, "stariy") end Далее, прописал квест "уничтожить лагерь" в task_manager.ltx: В list: stariy_eliminate_lager_1 Ниже: [stariy_eliminate_lager_1] type = eliminate_lager community = actor text = wolf_eliminate_lager_1_text description = wolf_eliminate_lager_1_descr parent = stariy target = gar_old_boars reward_money = 1000 reward_reputation = +20 reward_rank = 3 time = 86400 prior = 1 В общем, сделал всё, но вот результат: Почему так? Почему нет работы? Нет же никаких условий там, ничего. Подскажите, пожалуйста, в чём причина? Добавлено через 79 мин.: И вот почему-то игра не видит именно квеста на работу, будто он вообще не прописан в task_manager.ltx... Изменено 7 Марта 2011 пользователем Disord Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573618
amik 256 Опубликовано 7 Марта 2011 Поделиться Опубликовано 7 Марта 2011 Disord Извини что перебиваю но у меня назрел вопрос!) Можно сделать так чтобы живой динамический объекты (нпс, монстры) проходил сквозь стены (точней сквозь статические объекты)? Ну и конечно-же тот предмет должен знать что он это может, и идти сквозь стену а по АИ сетке? Вопрос не глупый кстати. Мой архив Сталкером не занимаюсь. Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573668
_Призрак_ 12 Опубликовано 7 Марта 2011 Поделиться Опубликовано 7 Марта 2011 (изменено) Disord А ты говоришь условий нет: <precondition>task_manager.has_active_vendor_task</precondition> amik Вот это ты задал вопрос. Задал так задал. А можно поинтересоваться зачем тебе это? З.Ы. Может сделать этот объект на основе партиклов? Но это только предположение человека, очень далекого от всего этого Изменено 7 Марта 2011 пользователем _Призрак_ Freedom Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573677
Disord 2 Опубликовано 7 Марта 2011 Поделиться Опубликовано 7 Марта 2011 _Призрак_, да это ограничение на выдачу награды за квест. Функция проверяет - брал ли я задание у данного НПС или нет. А не высвечивается даже диалог на предложение заданий... Уже не знаю, что делать. А amik, наверное, призрака хочет сделать Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573683
amik 256 Опубликовано 7 Марта 2011 Поделиться Опубликовано 7 Марта 2011 (изменено) Извиняюсь то был бок того домика, там все проходят...и нпс и монстры, а я та думал... Еще вопрос как отключить блодмарки определенному монстру? Collide Marcs в мат.парах отключен (пустая строчка). И еще настройки: ---- _Призрак_ Можно, но я на базе живого имел в виду... Изменено 7 Марта 2011 пользователем amik Мой архив Сталкером не занимаюсь. Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-573691
Министр 4 Опубликовано 7 Марта 2011 Поделиться Опубликовано 7 Марта 2011 Почему так? Почему нет работы? Нет же никаких условий там, ничего. Подскажите, пожалуйста, в чём причина? Ты уверен что лагерь на который ссылается квест вообще существует или заполнен? И вот почему-то игра не видит именно квеста на работу, будто он вообще не прописан в task_manager.ltx... Эммм... а как ты это определил? Функция проверяет - брал ли я задание у данного НПС или нет. Поправочка - проверяет есть ли у игрока активное задание от данного вендора. amik, вообще-то НПСы всегда идут по АИ-сетке и им пофигу на препятствия (стенки, баррикады и т.п.). Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-574018
Disord 2 Опубликовано 8 Марта 2011 Поделиться Опубликовано 8 Марта 2011 (изменено) Министр, да, смарт существует, вместимость - 12 мутантов, прописаны работы, заспавнено 12 кабанов с логикой, в которой указан смарттеррейн, к которому принадлежит кабан - gar_old_boars. Функция: --' Может ли вендор выдать квест function CRandomTask:parent_can_task(actor, npc, p1, p2, p3) local parent = self:get_parent(npc) local avail = false self:task_avail(actor, npc, nil, nil, nil, "reset") for k,v in pairs(self.task_id_by_parent[parent]) do if self:task_avail(actor, npc, nil, nil, self.task_info[v].init_phrase_id, true) then avail = true end end return avail end Проверяет, может ли вендор выдать квест, и, если есть квесты для данного вендора, то функция возвращает true. Если нету, то false и тогда вылезает текст: На данный момент ничего нет. Я сам менял переменную avail - вместо false - поставил true. И тогда вылезает: Есть кое-что: А в окне, где выбираются задания, только строка: Эти задания мне не интересны. То есть заданий не видно. Сделал второе задание по уничтожению лагеря собак - тоже не работает. Поправочка - проверяет есть ли у игрока активное задание от данного вендора. Ну да Добавлено через 288 мин.: В общем, покопался в файлах, и понял - что статья по добавлению типовых квестов не совсем полная... Короче, прописал в storyline_info_taskmanager своё задание, далее ещё и прописал в game_tasks_by_vendor задания своего НПСа, и всё равно не появляется. Только что скопировал задание убить сталкера, который даёт Бармен, заместо своего. И задание появилось, я мог взять его. Значит дело всё таки в оформлении моего задания... И скорее всего дело в смарте... Позже ещё покопаюсь, и, если что, отпишусь... Добавлено через 189 мин.: Да, проверил ещё раз, не работает ни один квест на уничтожение лагеря, хотя квесты на убийство НПС работают. С чем это может быть связано? Изменено 8 Марта 2011 пользователем Disord Ссылка на комментарий https://www.amk-team.ru/forum/topic/15045-soc-kovyrjaemsja-v-fajlah/page/300/#findComment-574048
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти