Перейти к контенту

Рекомендуемые сообщения

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
  Artos писал(а):
А "твой забавный эффект" происходит от того, что, например, при убийстве НПС и его удалении, нередко бывает что, покойник стрелял из автомата и этот автомат (принадлежащий ему) продолжает неккоторое время еще стрелять

 

Непись АБСОЛЮТНО спокоен. Если только в анимацию смерти даже в спокойном состоянии не входит "пострелять". Но это, как правило, когда ствол в руках. А здесь - даже и за спиной висит.

 

По патронам - тупо, поиском, поставил лог на все release. Не вижу удаления патронов. 8(

Если только какой-то адов механизм зарядки ствола при смерти. Вообще, надо будет попробовать все стволы отобрать, и потом убить.

 

Ссылка на комментарий

Dennis_Chikin, зависимые объекты (имеющие 'родителя/овнера') в некоторых конкретных случаях (находятся "внутри") не нуждаются в удалении отдельной командой/методом.

Удалив заряженное патронами оружие, ты в два этапа удаляешь одной командой 'release' оба объекта иоружие и патроны. Точнее этапов то как раз не два, а гораздо больше и разнесенных во времени (хотя и мокросекунды). А вот то, что команда еще не значит факт свершения - прочти в топике по ковырянию файлов (не стал дублировать сюда).

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos

Если бы ты это "по поводу "порчи" новых стволов при спавне через all.spawn" поместил в шапку, то это "Ответ на уже не раз встречающиеся вопросы" было бы реже. :)

 

Имхо теме нужен FAQ, куда стоит скидывать таки идеи, иначе потом они затеряются на сайте, и не стоит удивляться, что задают одни и те же вопросы.

 

Вурдалак

Юзали в каком плане? :D

 

> 1. В глобальном пространстве имен должно быть только одно имя для функции. Иначе найдутся и остальные.

В сталкере функции сортируются по названию скрипта. (_G[script_name][funct]), так что врятле найдёт остальные.

В частности и алгоритм поиска, что дал RvP нужно немного поправить, если я не путаюсь.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

*Shoker*, не вижу особой необходимости выносить такие частные случаи (именно по конкретному стволу) в шапку топика. Это скорее относится к "урокам моддинга". А ошибки и вопросы были и будут, и не только со стволами.

Суть в моем "ответе" - рекомендация НЕ путать классы объектов в кодах/конфигах (о чем многие и не задумываются) и вариант "как контролировать в спавне".

Наступать на грабли все одно будут, но ... если уже несколько прочтут и поймут "что к чему" - на вопросы/непонятки уже будут даваться конкретные ответы (по контексту), а не погадалки.

 

P.S. И собственно вопрос заданный _Призрак_'ом про поиск названия функции достаточно бессмысленен (ИМХО).

Собственно само имя функции - по сути и есть наименование переменной. Отличие только в том, что тип этой переменной только один - 'function', а не 'один из возможных типов данных'.

Если озабочен поиском причин ошибок/проблем - следует трассировать не некое имя, назначенное 'абы где и абы как', и которое может не дать однозначного ответа, а трассировать что и откуда вызывается.

Если же это в рабочих кодах - ни что не мешает запоминать и позже вызывать именно по имени на не собственно функцию, не утруждая ресурсы итерацией по метатаблице ...

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Вот ещё что давно хотел спросить, да забывал.. в игре есть функция eat() которая позволяет игроку (да и НПС) "съесть" какой то предмет. А работает ли эта функцию (или функция use(), которая как мне кажется, не относится к инвентарю) с обычными предметами, вроде оружия, брони и прочего?

Например возникла необходимость симитировать двойной щелчок на броне в инвенторе, чтобы она поместилась в слот.

Есть ли для этого какие то методы?

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

*Shoker*, с твоим вопросом прямой путь в 'lua_help.script' и топик "Справочник по классам и функциям".

Каждому клиентскому объекту в игре присущи некие функции/методы, а вот конкретно для какого класса какие - тут только пока методом тыка можем перепроверить, т.к. от разрабов нам такой информации недосталось.

Методы, которыми оперирует движек в окнах худа во многом для нас закрыты (не портированы в Lua).

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos

Вот уже который раз вы отвергаете с порога любые предложения завести в этой теме шапку с наиболее полезными сведениями, когда-либо в ней появившимися. Ну почему? За то время, что я наблюдаю за темой, тут не раз было что-то полезное, что стоило сохранить чтобы при необходимости быстро найти. А ведь около сотни страниц я не застал, и времени их все пролистать все никак не находится... быть может я не один такой.

Почему бы не предположить, что раз столько людей об этом просят, значит это действительно кому-то нужно.

Изменено пользователем Zander_driver

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Zander_driver

  Раскрывающийся текст (Показать)
Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий
*Shoker*, класс предмета в функции eat() должен наследовать от CEatableItem. Оружие и броня от него не наследуют. use() среди методов game_object в ТЧ нет, про остальные сказать не могу.
Ссылка на комментарий

Столкнулся с такой проблемой. Игра не сохраняет состояние артефакта, которое condition. Скриптом наношу артефакту повреждения, они на его полоске состояния видны, но стоит сделать save/load - у него опять шкала состояния полная.

Записывать в пстор актора сведения о всех артефактах - не вариант, не влезет туда такая прорва... А у самих артефактов если я правильно понял, пстора нет.

Существуют ли какие-нибудь способы сохранить состояние артефактов при s/L, без титанических затрат ресурсов?

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Zander_driver, не забываем в своих вопросах уточнять версию игры, о чем упомянуто в шапке топика.

 

Артефакты в ТЧ не биндятся. Также, для них не вызываются в процессе игры функции обмена нет-пакетами между серверным и клиентским объектами, поэтому то и не запоминается.

Вариантов 'обхода' как минимум два:

а) Забиндить артефакты и использовать pstor объекта для хранения состояния.

Примечание: Нет уверености, что будет всегда работать ... Для инвентарных ящиков при смене локация pstor порой теряется (причину пока не выяснял, в планах).

б) Записывать 'ручками' состояние в серверный объект, т.е. через нет-пакеты.

... ну иль прочими комбинациями.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

А можно ли использовать функцию в биндере актора

function actor_binder:info_callback(npc, info_id)

для проверки получения актором инфопоршня и вызова скриптовых функций?Просто не хочеться апдейт засорять.И планируеться использовать данную проверку для многих локаций и в функции сначала ставить проверку на инфопоршень и затем на имя локации.

Ссылка на комментарий

RvP

А по моему не совсем. Для вызовов функций при получении инфопоршней создали тег <action></action> А функция в bind_stalker скорее нужна для обработки множества инфопоршней например для их последующего вывода в лог

Freedom

Ссылка на комментарий

Всем привет народ! Помогите правильно построить следующую функцию для ТЧ

 

  Функция (Показать)
  Реклама модов (Показать)
Ссылка на комментарий

Ну так правильно, ты в апдейт сунул, вот он и проверяет состояние костюма постоянно.

Попробуй так, только я не знаю, прокатит,или нет

 

    if act_suit and act_suit:section() == "nano_kostum" then
            if act_suit:condition() < hev_min_cond_active then
            local msg ==true
            if msg==true then
                snd_obj = xr_sound.get_safe_sound_object( [[HEV\hev_crash]] )
                snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
                db.actor:give_game_news(hev_crash, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000)
                msg=false
                end
            end
        end

 

P.S. И не ставь в апдейт актора , сделай задержку на 5-10 сек...

Что-то кончается, что-то начинается...

Ссылка на комментарий

Vano_Santuri,

это ж бред.

 

serega-gamer, делаешь флаг в файле(не в функции) и по нему проверяешь выдавалось ли сообщение ранее

Vita sine libertate, nihil

Vita sine litteris - mors est

Ссылка на комментарий

Вот,есть такая трабла:

  Logic (Показать)
Изменено пользователем ColR_iT
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...