Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
_zero_cool_ 5 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 она не для ЗП, подключать можно от любой части к любой Ссылка на комментарий
@"StreloK" 2 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 (изменено) _zero_cool_ сейчас попробовал, но возникла проблема-оба уровня имеют одинаковый номер 22 - и соответственно не хотят подключаться. Можешь подсказать как это исправить? _zero_cool_ ай, протупил. Он из левого окна в правое переносит, а я наоборот пытался. Изменено 5 Марта 2011 пользователем @"StreloK" Prefiero morir de pie, que vivir siempre arrodillado. Ссылка на комментарий
_zero_cool_ 5 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 ну переноси, он прономеруется как надо Ссылка на комментарий
_Призрак_ 11 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 _zero_cool_ Видимо у меня отсутствует чувство юмора. Ведь должна быть таблица с спейс_рестрикторами. Я нашел таблицу в которой есть все зоны - но там и спейсы и аномалии и смарты. Ее можно конечно перебрать, но как тогда узнать что эта зона - именно спейс? Freedom Ссылка на комментарий
amik 253 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 _zero_cool_ От куда ты такое взял? @"StreloK" Эта прога для сборки лок к ЗП. Когда-то давно тоже пробовал ей подключить к ТЧ пару локаций (не помню в чем изюм, не создается какой-то файл)...короче думаю понятно.. Мой архив Сталкером не занимаюсь. Ссылка на комментарий
_zero_cool_ 5 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 не создается левекл.аи в этом случае он и ненужен Я вот ток что все сделал чтоб уверить себя в правоте Ссылка на комментарий
Полтергейст 37 Опубликовано 5 Марта 2011 Поделиться Опубликовано 5 Марта 2011 Призрак Можно ли узнать попал ли актор в какой нибудь спейс? А в чём проблема? Пишем: local actor_v_zone = npc_in_zone(db.actor, zone) где zone - это restrictor, который надо проверить. Если надо узнать, входит ли actor вообще хоть в какой-нибудь restrictor, то для этого надо перешивать class_registrator.script и возиться с биндерами, если надо - напишу готовый вариант, сам только что сделал такое у себя. Ссылка на комментарий
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 Ссылка на комментарий
Полтергейст 37 Опубликовано 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 Ссылка на комментарий
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 Ссылка на комментарий
Полтергейст 37 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 ЗЫ:npc_in_zone() это же не глобальная функция из _g.script , а ты уже вторично забываешь указать модуля, в котором она находится. У меня эта функция как раз глобальная из _g.script (перенёс для удобства), вот и написал по привычке. смарт терейны находятся в табличке db.smart_terrain_by_id - отдельно от рестрикторов В таблице рестрикторов они тоже есть - в биндере смарта есть вызов db.add_zone() Ссылка на комментарий
FLIKER 0 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 _zero_cool_, Может кинешь логику с эскепа? Жить – значит делать вещи, а не приобретать их. Ссылка на комментарий
_Призрак_ 11 Опубликовано 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 Ссылка на комментарий
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 Ссылка на комментарий
Полтергейст 37 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 Хех, только что нашёл решение проблемы обхода аномалий. Просто им нужно присваивать restrictor_type = 2 с помощью net_packet'ов при спавне. Тогда они автоматически добавляются движком в рестрикторы ко всем npc. _Призрак_ Перед этой строкой напишите так: if db.storage[zone:id()] == nil then db.storage[zone:id()] = {} end Вылет должен исчезнуть. Ссылка на комментарий
PGU_tk 9 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 Monnoroch, Можно узнать Сколько патрон в Стволе Узнать их секцию И так ,по мелочи Не более Вот у меня вопрос - как узнать секцию? https://www.youtube.com/watch?v=1h34a3CpkIc Ссылка на комментарий
_Призрак_ 11 Опубликовано 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 Ссылка на комментарий
Полтергейст 37 Опубликовано 6 Марта 2011 Поделиться Опубликовано 6 Марта 2011 Прочитать параметр ammo_class в секции пушки. Ссылка на комментарий
@"StreloK" 2 Опубликовано 7 Марта 2011 Поделиться Опубликовано 7 Марта 2011 А может кто подсказать-можно-ли заставить НПС стрелять в определённую цель (БТР) ? Prefiero morir de pie, que vivir siempre arrodillado. Ссылка на комментарий
Disord 1 Опубликовано 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 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти