weas 0 Опубликовано 7 Августа 2011 Поделиться Опубликовано 7 Августа 2011 (изменено) ColR_iT, За инфу спасибо, но когда из нее будут "вылезать" НПС? Добавлено через 1 мин.: Ой, тоесть через сколько? Почитай вот эту статью: Respawn ColR_iT Изменено 7 Августа 2011 пользователем ColR_iT Ссылка на комментарий
RayTwitty 492 Опубликовано 7 Августа 2011 Поделиться Опубликовано 7 Августа 2011 speczadanie, смотри это Ссылка на комментарий
*Shoker* 322 Опубликовано 7 Августа 2011 Поделиться Опубликовано 7 Августа 2011 А зачем в коде выбрасывания предмета создавать дубликат, чтобы "задержку" сделать что ле? Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Ulman 5 Опубликовано 7 Августа 2011 Поделиться Опубликовано 7 Августа 2011 (изменено) Ребята, я задавал этот вопрос в другой теме, но мне кажется здесь это будет правильней. Как сделать чтобы уникального нпс не лечили и после смерти не обыскивали его? Добавлено через 259 мин.: И извиняюсь, забыл дописать, мой вопрос по ТЧ. Изменено 7 Августа 2011 пользователем ColR_iT Ссылка на комментарий
Kirag 39 Опубликовано 7 Августа 2011 Поделиться Опубликовано 7 Августа 2011 *Shoker* Чтобы предмет не вернулся в слот. Предмет роняем, слот освобождается. Если сразу поднять, предмет попадет в свободный слот. Если сначала заспавнить дубликат, то в слоте он и окажется, а поднятый предмет упадет в инвентарь - слот будет уже занят дубликатом. Потом дубликат удаляем. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
*Shoker* 322 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 Ulman В каждой из этих схем (их две), в скрипте нужно где нить прописать своего НПС. Где и как именно - нужно смотреть сам скрипт, как его сделал автор. Kirag Понятно, спасибо Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
=VENOM= 50 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 Ulman, если для "лечения" NPC используется т.н АИ-пак xStream'a (а скорее всего, так оно и есть), то в самом начале файла xrs_medic.script можно обнаружить табличку по имени excluded_npcs. Вот в неё и нужно заносить имена NPC, которых будут игнорировать NPC-"медики" - там, кстати, уже указаны несколько "беспомощных товарищей", так что разберёшься. Что касается исключений для обыска, тут сложнее, т.к. автор (кто забыл - Red75, файл watcher_act.script) отчего-то не предусмотрел такой возможности (зато изначально есть возможность определить тех, кто мародёрствовать не станет ), но добавить условие по "отсеиваию" имён (или по story_id, например, или по названию группировки и т.д. и т.п.) совсем несложно. Ссылка на комментарий
Disord 1 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 =VENOM=, вроде бы и watcher_act есть условие такое. Глянь переменную zombi. Ссылка на комментарий
Ulman 5 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 =VENOM=, спасибо большое, а то как то мимо пропустил таблицу. Disord, я тоже разбирался с этой переменной, туда вроде бы группировку вписывать надо? Ссылка на комментарий
Prozone97 0 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 Как сделать, чтоб при попадании гг в определенную точку, активирывалась функция?(и чтоб при следуйщих попаданиях функция не вызывалась, т.е. куда писать инфпоршень) И еще , как вызвать функцию при получение гг какого-нибудь предмета? Ссылка на комментарий
Капрал Хикс 513 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 Prozone97, первое - через спейс рестриктор в оллспавне. С логикой вида (примерно): [logic] active = ph_idle [ph_idle] on_actor_inside = give_info ... END Ссылка на комментарий
PavelSnork 3 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 Всем привет. Нужен ваш совет. Вот, например, у меня есть условие в функции: if db.actor:health > 0.1 and db.actor:health < 0.2 or db.actor:health > 0.5 and db.actor:health < 0.6 then ....... Я правильно понимаю, функция будет выполнятся при условии, если у гг здоровье будет, к примеру, 0.15 или 0.55, так? Просто мне надо, чтоб выполнялось или это db.actor:health > 0.1 and db.actor:health < 0.2 условие, или это db.actor:health > 0.5 and db.actor:health < 0.6. Ведь можно посчитать, что должно выполняться 3 условия: db.actor:health > 0.1, db.actor:health < 0.2 or db.actor:health > 0.5, и db.actor:health < 0.6... Жду ли я Сталкер 2? Хм... Ссылка на комментарий
Prozone97 0 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 в аллспавне не разбираюсь)), может можно без него как-нибудь? Ссылка на комментарий
*Shoker* 322 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 (изменено) Prozone97 А без него скриптами ещё лучше PavelSnork Почти так, тока ещё будут учитываться и 0.11, 0.12, 0.13 ... А вообще подробней опиши, как тебе надо. Изменено 8 Августа 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
ColR_iT 171 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 (изменено) Для Prozone97 Капрал Хикс, позволь тебя поправить, хотя даже не поправить, а дополнить. Чтобы рестриктор больше не проверял наличие в нем актора, нужно поставить перед выдачей инфопоршна nil, вот так: [logic] active = sr_idle [sr_idle] on_actor_inside = nil %+if_actor_inside% вместо выдачи инфопоршна (%+if_actor_inside%), можно выполнить функцию: [sr_idle] on_actor_inside = nil %=if_actor_inside% функция if_actor_inside должна находиться в файле xr_effects.script. Можно конечно произвести проверку и скриптово, но это сложнее и проверка будет выполняться всегда (хотя действие выполнится один раз), поскольку вызов функции придется вешать на апдейт актора. Что касаеться выполнения функции при получении какого либо предмета. Приблизительно так: В файле bind_stalker.script найти вот такую функцию function actor_binder:on_item_take (obj) и дописать в нее проверку, по такому типу: if obj:section() == "obj_section" and db.actor:dont_has_info("condition_info") then -- action db.actor:give_info_portion("condition_info") end где: obj_section - имя секции проверяемого предмета (например для АК-74 это wpn_ak74. Имя секции смотрим в конфиге предмета). action - вызов твоей функции. condition_info - инфопоршень, который ограничевает проверку на один раз. Т.е. получается, что если инфопоршня нет, производим провеку и выдаем инфопоршень, чтобы более действие не выполнялося. Если необходимо, чтобы проверка происходила постоянно убери проверку на инофпоршень. Оговорочка: это будет происходить, если актор подберет предмет сам (с земли, с ящика и т.д.), при трансфере, другими словами, при передачи предмета от кого-то к актору - это не сработает. Чтобы впринципе проверить наличие предмета в инвенторе, можно сделать так: function check_actor_inventory () actor = db.actor if actor and actor:object("item_section") ~= nil then -- action end end здесь: item_section - имя секции проверяемого предмета action - действия если предмет есть. Изменено 9 Августа 2011 пользователем ColR_iT Ссылка на комментарий
Kirag 39 Опубликовано 8 Августа 2011 Поделиться Опубликовано 8 Августа 2011 PavelSnork Лучше проставить скобки в подобных случаях - так ты будешь точно уверен, что поймет как нужно, а не как получится. Для твоих целей - вот так: if (db.actor:health > 0.1 and db.actor:health < 0.2) or (db.actor:health > 0.5 and db.actor:health) < 0.6 then Как и для обычной арифметики, сначала вычисляются выражения в скобках, потом уже общее. Мои работы: Ночные прицелы + смена ножевого слота AI вертолетов + ПЗРК Soul Cube Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем. Ссылка на комментарий
=VENOM= 50 Опубликовано 9 Августа 2011 Поделиться Опубликовано 9 Августа 2011 Disord, я уже отписал, что изначально в схеме можно указывать тех, кто не будет работать под схемой "мародёры" (то есть не будет обшаривать трупы). Это и есть пресловутая переменная "zombi". Не веришь - обрати внимание, там прописаны как раз зомбированные, а они, в свою очередь, как раз мародёрством не занимаются . Ну, это, конечно, исправить можно, если только у всех моделек зомбированных сталкеров имеется полный набор "сталкеровских" анимаций, иначе, как водится, будет стопудовый вылет. А Ulman'u надо, чтобы указанных персонажей именно не обшаривали после смерти. Ulman, если уж совсем просто, то сделай так - добавь в самое начало функции checkCorpse(obj) (файл watcher_act.script) вот такую строчку: if IsStalker(obj) and obj:name() == "stalker_name" then return false end "stalker_name" следует заменить на имя того сталкера, труп которого не должны обшаривать мародёры - но только не на "Вася" или "Петя", а на такое же, как и в файле xrs_medic.script для раненого, которому "не требуется" помощь. Ссылка на комментарий
Ulman 5 Опубликовано 9 Августа 2011 Поделиться Опубликовано 9 Августа 2011 Как я понял в эти 2 файла надо писать имя, которое прописано в all.spawn то есть например name = esc_vagon_wounded, то в скрипт надо писать esc_vagon_wounded. Сделал так, но его продолжают лечить. Чего я ещё неправильно делаю? Ссылка на комментарий
ColR_iT 171 Опубликовано 9 Августа 2011 Поделиться Опубликовано 9 Августа 2011 (изменено) Prozone97, да и всем кому интересно. Вот скриптовая функция для проверки нахождения ГГ в определенной области: function distance_to_point (lname, pos_x, pos_y, pos_z, dist) local actor = db.actor -- определим текущую локацию, дабы не определять гейм и левел вертексы, хотя можно и их local lev_name = level.name() -- зададим точке наши координаты local point = vector:set(pos_x, pos_y, pos_z) -- проверим существует ли актор и находится ли он на нужной локации if actor and lev_name == lname then -- определим координаты актора local actor_pos = actor:position() -- чтобы сэконимить ресурсы ПК проверим квадрат расстояния между ГГ и точкой if point:distance_to_sqr(actor_pos) <= dist*dist then return true end return false end end Вызов функции следующий if distance_to_point ("l01_escape", -210.632614135742, -20.050708770752, -142.461120605469, 10) then l01_escape - имя уровня на котором нужно проверить вхождение ГГ в область координаты ставим свои, я поставил координаты места спавна Волка 10 - расстояние до нужной точки. Поскольку вероятность того, что ГГ пройдет именно через точку - очень низкая, то используем область, радиус которой и определяет параметр dist P.S. Если где-то ошибся поправьте пожалуйста. Спасибо Charsi за указаные ошибки. Изменено 9 Августа 2011 пользователем ColR_iT Ссылка на комментарий
Ндр 3 Опубликовано 9 Августа 2011 Поделиться Опубликовано 9 Августа 2011 (изменено) Всем добрый вечер. Вопрос по редактированию death_manager'а: искал в этой теме и ковырялке 2 момента, насчет разрядки оружия мертвых НПС и состояния стволов, которые роняют раненые, падающие на землю. На первый нашел ответ, а на второй так и нет. Так вот, спрашиваю, как (и возможно ли) сделать, что бы оружие, которое выронил НПС, имело степень износа, а не было новым? Показалось, что это есть в моде LWR, поэтому это наверное возможно Изменено 9 Августа 2011 пользователем Ндр Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти