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

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

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


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

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

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

 

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

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

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


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

Поэтому и указал, что именно в таком (+G) написании - это глупость/ошибка и важен контекст, чтобы отделять мух от котлет, т.е. говорить о том, что же подразумевалось в исходном коде и в какую сторону стОит "модить", дабы избежать ошибок.

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

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

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

Ты этого никак не указал. Ты просто сказал "глупость". Не указав при этом на настоящую потенциальную опасность. В данном случае контекс очевиден: берем строку, обращаемся к соответствующей функции в соответствующем файле.

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

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

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

Но если уж предполагать, то упомянутое Dennis_Chikin напоминает мне ковыряние с xr_logic.script, где у меня, например это:

  код (Показать)
Изменено пользователем Artos

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

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

Совершенно верно. И мне непонятно, почему придирание к опечатке пошло и речь о контексте...

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

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

xStream,

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

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

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

Для разговора с физическим объектом как я понял нужен невидимка. Можете мне скинуть его!

 

Уже давалась рекомендация не глаголить погадалки.

Потрудись задавать вопросы связанно и информативно, а не некими туманными фразами.

--/Artos

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

Создаю глобальный мод с новыми локациямЭ

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

TASTAN

Расскажи поподробнее, что ты имеешь ввиду "в диалоге проверить"??? Суть задумки в чем?

 

Жизнь следует измерять поступками, а не временем...

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

Artos, А оно выдаст мне название смарта или что-то еще?

 

  Таким образом будет работать? (Показать)
Изменено пользователем ColR_iT
Ссылка на комментарий

Artos,

  Цитата
Но если уж предполагать, то упомянутое Dennis_Chikin напоминает мне ковыряние с xr_logic.script, где у меня, например это

Да, и здесь - тоже. Только гибрид чей-то правки с оригиналом: если нет модуля/функции - идем смотреть xr_effects, а не xr_conditions.

И вообще много где, кроме как в этом фрагменте. Идея везде она и та же. А исполнение - разное. Как размножается код в модах ? В основном, копипастом. Потом где-то что-то меняется немножко. Конструкции получаются порою странные. И кроме того, что получилось, надо еще понять - а чего вообще хотели-то, когда делали.

 

Кстати, по xr_logic - в приведенном куске нил возвращать вообще безопасно ? Или лучше на рабочий стол сразу нафиг ?

 

  Цитата
Как раз применительно к штатному xr_logic.script и иже твоя фраза ...

- некорректна. И тот и иной скрипты штатно прописаны в xr_logic.script, только для разных целей

О, как ! Значит все еще чудесатее, чем казалось сначала. Надо будет сравнить с оригиналом полностью и построчно, пожалуй.

 

 

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

TASTAN, функция тебе возвращает объект гулага/смарта, а не его имя. Соттветствено если требуется проверка по имени то и используй доступное :name():

if smart and (smart:name() ~= "mar_csky_base") and (level.name() == "marsh") then

 

Добавлено через 9 мин.:

Dennis_Chikin, что и когда лучше - у каждого модмейкера свое.

Кто-то замазывает ошибки, кто-то наоборот вытаскивает их наружу, дабы увидеть и пофиксить.

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

Как раз применительно к штатному xr_logic.script и иже твоя фраза:

  Цитата
Dennis_Chikin: ... если нет модуля/функции - идем смотреть xr_effects, а не xr_conditions
- некорректна. И тот и иной скрипты штатно прописаны в xr_logic.script, только для разных целей, а вот возможность указать в логике не только эти два скрипта (дефолтно), а назначить свои сторонние обработчики - как раз и дает смысл таким кускам кодов.

 

Ну и по "кстати", возврат нила (nil) как раз штатно и предусмотрен в xr_logic.pick_section_from_condlist при отсутствии невыполнении условий (секции для переключения). А безопасность определяется тем, как обрабатывают возвращаемый результат вызывающие функции ...

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

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

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

Читайте тут и далее

http://www.amk-team.ru/forum/index.php?sho...420#entry561168

Там говорится про невидимку

Создаю глобальный мод с новыми локациямЭ

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

strelok200, давай называть вещи своими именами/терминами, а не теми, которые захотелось употребить (часто не понимая их сути).

Вести диалог со "стенкой" - полнейшая чушь.

Если захотелось сделать нечто типа ветвления сюжета в зависимости от некоторых текущах параметров (аля-"Исполнитель Желания"), то и не нужно такой "псевдо-диалог" так упорно отождествлять со стандартными диалогами.

Тебе уже дали ответ, что по какому-либо событию (хотя бы вхождению в рестриктор) создавай свое окно и делай то, что хочется в нем.

Никто, например, не называет меню выбора часов сна - диалогом со спальником/матрацем, так зачем же с любым иным физ.объектом упорно задавать вопрос как про диалог?

Как понимаю, тебе вероятно уже немного знакомо как писать диалоги с неписями, а вот пока по работе с классами окон и написанию своего меню у тебя пробел, вот и цепляешься за призрачного "невидимку", думая это более легкий путь.

Ну подожди ... может кто и скинет тебе этакого собеседника "невидимку". ;-)

Хотя сам бы мог провести аналогию с диалогом с "О-сознанем", где хотя собеседник и "видимка", но визуально - якобы голограмма. Ну так и попробуй сделать по аналогии, только вместо отображения голограммы, показывай свой физобъект, скрывая самого собеседника.

Вот только думаю для тебя это не проще, чем научиться работе с классами окон и просто написать нужное меню.

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

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

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

Добрый вечер!

Возник вопрос относительно скрипта logic переключение схем!

В файле xr_conditions есть 2 функции:

 

  функции (Показать)
Изменено пользователем Artos

Жизнь следует измерять поступками, а не временем...

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

losiara, естественно эти функции можно использовать для переключений между секциями логики, тем более это собственно 'штатные' функции проверок, которыми и оперирует дефолтно xr_logic.script.

Однако:

1. Следует различать в парах:

on_actor_dist_le_nvis и on_actor_dist_le - ближе чем ...

on_actor_dist_ge_nvis и on_actor_dist_ge - дальше чем ...

- которые (в парах) различаются тем, что первое условие (с nvis) срабатывает в любой ситуации когда объект на определенном расстоянии (т.е. без проверки на видимость), а вторая - только когда объект 'видим' актором (в поле его зрения).

Второе условие применимо не ко всем объектам, т.к. метод obj1:see(obj2) работает только для неписей/монстров и еще некоторых (не помню точно каких) классов объектов.

2. Штатных логических условий (функций) для проверки расстояний между различными неписями (а не актором) в кодах xr_logic.script нет, хотя ничего не мешает их или какие потребны добавить.

Но ... твоя формулировка:

  Цитата
переключение при приближении НПС с определенным sidом к другому НПС с этой схемой...
- очень ресурсо-затратна при попытке решить 'в лоб', т.к. чтобы при проверке секции одного текущего НПС знать всех остальных, работающих под этой схемой - нужно еще постараться это сделать ... или итерируя по спискам типа db.storage или по заранее подготовленным. Изменено пользователем Artos

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

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

demover123, Все там стоит ! Я раз 10 переделывал и проверял и результат такой же . Потом думал может у меня координаты не правильно снимает прога, и посмотрел какие координаты стоят в чн . А там вообще вот что :

 

[mar_smart_terrain_10_5_kamp_1]

points = p0

p0:name = name00

p0:position = 401.542633056641,3.7787299156189,265.570220947266

p0:game_vertex_id = 54232 ; такого вертекста вообще нет в игре

p0:level_vertex_id = -1

 

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

0023:08074F22 xrGame.dll

0023:08190865 xrGame.dll

0023:00413865 xrEngine.EXE, CCameraManager::operator()

 

Кто нибудь может что то сказать по этому логу? ЧН, 10 патч.

В моде есть схема, заставляющая сталкеров бежать в укрытия. Она работала хорошо на болотах (где я её и тестировал, и на других местах) но вот почему то на Кордоне (и боюсь это может быть не единичный случаи) в районе моста такой вылет в момент включения схемы. Я подозреваю что моя схема конфликтует как то со схемами смарт-кавера (видимо где то в этот момент идёт бой как раз, и когда включается схема с её ограничениями - что то идёт не так)

 

Я щас ещё буду тесты проводить, но может кто уже сталкивался с этим.

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

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

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

Получил сейчас вылет с интересной диагностикой, и нашел по нему вот это:

http://www.amk-team.ru/forum/index.php?sho...25&st=2318#

 

Интересно, тогда как-то разобрались с проблемой ? Чем-то похоже на обсуждавшееся вчера-сегодня ночью с регэкспом и обращением к _G[чего-то-там]

 

Добавлено через 43 мин.:

Artos, однако module, fname = string.match(func, '(%w+)%.(%w+)') превращает, например, arhara_dialog.lysyi_sms в dialog.lysyi.

 

Так что тоже не самый удачный вариант. Гм... даже не подумал, что "_" - это разделитель и в смысле регэкспов. Очевидно, надо строки просить.

 

Upd: Ага, спасибо за "|". Но пока оставим как есть, наверное, и будем ругаться/вылетать тупо по обнаружению отсутствия файла/функции. А то там всего можно ожидать... Пару раз на попытках сделать "защиту" уже обжегся - проблему непосредственно в месте обнаружения проходило, зато потом чудеса начинались.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Dennis_Chikin, не знаю, разобрались ли "тогда", но собственно и проблема то не сложная.

Заготовка для решение (касательно xr_conditions) как раз и была тут упомятута и показана в #3527. Для xr_effects полностью аналогично, только имя в коде иное.

 

По патерну: Все же в каждом случае патерн выбирается исходя из контекста и не может быть для всего "самым удачным".

Мною был выбран именно этот, дабы не искушаться различными извратами в именах модулей/функций при сторонних вызовах (не из штатных скриптов для логики), о чем и указал:

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

В том исходном виде (тобою упомянутом: "(.+)[.](.+)") патерн никак не защищает от ошибок/описок при употреблении специальных символов иль пробелов, а ловить такие ошибки из логики не так уж порою и легко ...

Если хочешь и нижнее подчеркивание (это не алфавитно-цифровой символ!) использовать в именах, то патерн для этого может быть таким:

'([%w|_]+)%.([%w|_]+)' - в именах модулей/функций разрешены в любых комбинациях (от 1-го и более) алфавитно-цифровые символы и символ '_'

 

Примечание: К сожалению многие не догадываются, что бездумное использование логики и "универсальных" кодов для нее - чревато ... Ведь для каждого онлайнового (и не только, вспомним смарты/респавны) текущие секции логики постоянно сканируются апдейтами объектов и многочисленными схемами и каждая такая проверка (хотя бы и по излишне свободным патернам) забирает процессорные такты. Так что в этом как раз нужно знать меру и не транжирить даже коротенькие строки в конфигах логики понапрасну.

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

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

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

Имею такой скрипт:

 

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

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

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

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

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

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

Войти

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

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

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