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

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

(ЗП)Нужно добавить текст в текстовое поле(CUITextWnd)

...
self.dList = cXml:InitTextWnd("dialog:func_text",self.oDialog)
self:Register(self.dList, "func_text")
...

-- добавляю
self.dList:SetText(self.dList:GetText()..sText .. "\\n")

по идее так оно должно переносить "каретку" на строку ниже, но...

в итоге получаю что то типо

"фывфы \n"

 

ЗЫ смотрел как сделано в ui_load_dialog.script (функция file_data(fname)), и делал так же, там все ок, у меня нет...

ЗЫЫ "\n" тоже не катит... правда символ сам не выводит, но и строку не переносит

Изменено пользователем Viнt@rь
Ссылка на комментарий

Viнt@rь, задай в конфиге текстового поля параметр complex_mode="1" либо используй метод SetTextComplexMode(boolean).

  • Нравится 1
Ссылка на комментарий

Viнt@rь, вопрос уже неоднократно обсуждался на различных форумах.

Не нужно ожидать от каждого оконного класса то, что присуще другому классу... Распарсивание строк текста заложено не в классы, а выполняется движком для тех классов, которые прописали разработчики (коряво пояснил, но надеюсь смысл понятен...).

Так что остается только или делить самому свою строку на куски и выводить в отдельных окошечках или применять соотв.классы (если такое возможно). В примере из ui_load_dialog.script используется класс CScriptXmlInit, т.е. класс, которому прописан наиболее полный функционал/методы.

 

Charsi, параметр complex_mode="1" иль метод SetTextComplexMode(boolean) задают режим (не)переноса строки по мере ее заполнения (по переполнению), а не по знакам "перевода каретки" (\n), т.е. "указать" где делать перенос строки не удастся.

 

 

P.S. Возможно ошибся, подзабыв что-то, но ... вероятно в этом повинно твое (Viнt@rь) упоминие в вопросе именно класса CUITextWnd (большинство именно скриптовых классов не парсят текст по переносам), а на самом деле используешь тот же CScriptXmlInit.

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

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

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

Artos, ошибаешься))) все получилось) и перенесло, когда я добавил в тег complex_mode="1"

 

Хотя если делать с использованием SetTextComplexMode(boolean), то ничего не меняется

 

а на самом деле используешь тот же CScriptXmlInit.

да, скорей всего ты прав, я забыл дописать

local oCXml = CScriptXmlInit()
...
self.dList = oCXml:InitTextWnd("dialog:func_text",self.oDialog) -- но все же это создается обьект класса CUITextWnd
self:Register(self.dList, "func_text")
...

Изменено пользователем Viнt@rь
Ссылка на комментарий

Viнt@rь, объект-то окажется от схожего классу CUITextWnd, но он то в твоем и случае "от родителя" и унаследует родительские свойства, т.е. возможность читать xml-тэги из шаблона, а не только скриптовые методы.

И мог бы воспользоваться и поиском: #2742 и далее...

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

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

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

Никто не знает, можно ли как то в скриптах в моменте сохранения игры отловить название сейв-файла (*.sav) куда будет произведено сохранение? Зарание спасибо.

 

Есть ли способ в скриптах в момент сохранения узнать имя *sav-файла, то-есть имя файла с сохранением?

 

И ещё вопрос на стыке нескольких тем, но кто нибудь пробовал играть у трупов НПС простые анимации, но чтобы при этом рэгдол ещё работал?

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

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

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

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

*Shoker*, любое сохранение в игре вызывается консольной командой: get_console():execute("save " .. fileName) - где fileName и есть имя файла (вместе с расширением) сохраняемой игры.

"Штатный" вызов находится в ui_save_dialog.script (см. save_dialog:SaveFile(fileName)) и в ТЧ достаточно оттуда получать требуемое имя.

Для ЧН и ЗП придется залезть еще в пару.скриптов, т.к. есть "сюжетные" вызовы из xr_effects.script (см. scenario_autosave) и jump_level.script (см. try_to_jump) - поэтому придется и туда вставлять свои строки, чтобы получать требуемое имя.

Также, расширение для cэйвов задается в ui_load_dialog.script (см. saved_game_extension), и следует учитывать, что в том же ЗП оно уже не *.sav, а *.scop.

 

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

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

 

.P.S. Для трупов сразу же по сути полностью отключается менеджер состояния тела (state_mgr.script) и соответственно все анимации. Тут, если конечно и сам движок не блокирует все и вся, если только перелопачивать сам state_mgr и его производные (state_mgr_animstate.script, ...),

Однако зачем такие "опыты"? Воскрешение трупов и превращение их, например, в зомби (ходячие трупы) - давно доступно...

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

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

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

Artos,

к сожалению, быстрое сохранение так не отловить.

  • Нравится 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

malandrinus, ну алгоритм то по "отлову" имени конечно чуть посложнее должен быть, и вполне можно и квик-сэйвы отлавливать.

Любой момент сохранения отлавливается в биндере актора (в соотв.методе) и, если имя для сэйва не получено из выше указанных мест/скриптов - то остается только либо квик-сэйв (user_name().."_quicksave"..saved_game_extension), либо "ручками" задано.

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

Примечание: если даже и "штатный" лог-файл игрок захочет отключить - можно и в "свой" писать... ;-)

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

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

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

Оффтоп: Это нормально что форум в окно ответа вместе с текстом копирует элементы сайта? Не могу даже ник выделить без копирования фона (!) сайта.

 

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

 

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

 

По поводу трупов и анимаций была идея через них сделать отрывание конечностей при смерти у персонажей. (через анимации скрывать нужный участок тела персонажа и спавнить на это место "мясо") Через подмену моделей будет слишком много возни.

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

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

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

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

Shoker,

Так при чём здесь анимации? Тебе кости надо скрывать/показывать. Вот только настраивать визуалы всех неписей - работёнка та ещё.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

*Shoker*, (маленькая ремарка) - "не стоит ещё забывать и автосейв и прочее" полностью подпадает под уже выше описанное, т.е. под "штатный" вариант создания сэйвов.

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

 

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

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

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

Shoker,

Так при чём здесь анимации? Тебе кости надо скрывать/показывать. Вот только настраивать визуалы всех неписей - работёнка та ещё.

 

Штатного метода вроде нет же, а модифицировать движок тоже не представляется возможным. + при скрытии костей ведь геометрия тоже пропадёт и в теле НПС будет дырка, а анимацией это эту дырку можно "сшить"

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

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

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

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

Shoker*, вообще в контексте игры -

Анимация — процесс придания способности двигаться и/или видимости жизни объектам и мёртвым телам (например, зомби — анимированный труп)
, поэтому совершенно не понятно как "мясо" может анимировать и "анимацией сшивать дырки"...

Учитывая твое пояснение... и то, что это уже никаким боком не относится к теме топика (скриптам), предлагаю, дальнейшее (если оно будет) перенести в топик ... типа ковырялок

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

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

Shoker,

а модифицировать движок тоже не представляется возможным.

эм.. Религия не позволяет? =) Для ТЧ уже есть такие возможности. Не помню только, делал их для оружия или для любого объекта. Однако, при желании эту правку можно откопать и задействовать.

 

+ при скрытии костей ведь геометрия тоже пропадёт и в теле НПС будет дырка, а анимацией это эту дырку можно "сшить"

Теоретически да, если движок поддерживает не скелетную анимацию, в чём я не уверен. По моему не поддерживает. Чисто же движением костей ты такого эффекта не добьёшься.

 

Со скрытием костей же всё просто. Одну кость скрыть, другую показать (которая дыру заткнёт),

 

Хотя это всё конечно в теории. На практике придётся менять все стопятьсот моделей сталкеров. Вот поэтому такие фишки обычно присутствуют в играх, где тела неписей отдельно, а одежда отдельно. В движке третьего фола к примеру.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

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

Учитывая желание *Shoker*'а: "идея через них сделать отрывание конечностей при смерти у персонажей" - то сокрытие одной кости у модели и показ другой, как раз не решит задачу. Очевидно требуется не подменять одну кость на другую, а именно скрывать "оторванную" и, не показывать другую кость модели, а на месте "скрытой" кости показывать "оторванный" от модели объект (заспавненный) с таким же видом как и скрытая кость . Именно тогда можно будет именно "оторвать", и, судя по упоминанию о "рэгдол" в вопросе, вероятно, еще хотСа, чтобы эти оторванные конечности в суставах "анимировали"... ;-)

 

Примечание: как бы ресурс АМК не забанили бы (не включили в черный список) ... за обсуждение способов создания расчлененок и т.п. :crazy:

 

 

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

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

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

Artos,

 

ну если уж уважаемые конторы, типа Беседки, озаботились созданием расчленёнки, то почему бы и нем не побеседовать на эту тему? =)

 

Вообще конечно задачу можно решить по-разному. Можно было бы попытаться что-то покрутить с разрушаемыми объектами. Т.е. подменить объект при смерти на разрушаемый с визуалом сталкера. Но тогда пропадёт инвентарь.

 

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

1. Надо убрать оторванную конечность. Это как раз и решается с помощью костей. Кость руки, к примеру, скрывается, а на её месте показывается кость с обрубком.

2. Надо создать отдельный объект конечности на уровне. Это естественно уже к костям отношения не имеет.

 

P.S.: хотя лично мне эта фишка с расчленёнкой всегда казалась сомнительной

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

malandrinus,

Про "бан" я конечно пошутил, но ... дело не в том что кто-то где-то тоже подобное обсуждает, а в том, что с 1-го числа этого месяца заработал закон (см. о черных списках Роскомнадзора) и... судя по тому как и с кем это уже "срабатывает" - в шутке может оказаться и частица предвидения. ;-)

Крупнейший российский торрент-трекер Rutracker.org попал в черный список Роскомнадзора. Как сообщается в блоге файлообменника, владельцы ресурса получили уведомление, что на одной из страниц находится запрещенная информация, которую нужно удалить в течение суток. Речь идет о раздаче «Энциклопедии суицида».

В сообщении Rutracker говорится, что эта раздача была удалена, о чем уведомили Роскомнадзор. Однако электронное письмо вернулось с пометкой rejected (отклонено).

За минувший день Rutracker стал уже третьим популярным сайтом, попавшим под прицел Роскомнадзора. Ранее в черный список попала интернет-энциклопедия «Луркоморье» и онлайн-библиотека «Либрусек». В обоих случаях это было сделано по запросу ФСКН. Наркополицейские нашли на этих сайтах пропаганду наркотиков. Владельцы «Луркоморья» согласились убрать спорную статью.

НТВ.Ru напоминает: с 1 ноября Роскомнадзор запустил сайт zapret-info.gov.ru. Там составляется список интернет-ресурсов, уличенных в пропаганде наркотиков и самоубийств и распространении детского порно. Если сайт после уведомления не удалит запрещенную информацию, его заблокируют без решения суда.

 

 

И тоже, считаю сомнительным интерес к созданию подобных "фишек" в модах, и мне малоинтересен.

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

 

 

 

 

P.S. Кстати, спасибо за невольную наводку, может и пригодится. Твои слова "Но тогда пропадёт инвентарь" попробовал, по своей дурной привычке, проанализировать и... Вспомнилось, что у монстров после сэйва "инвентарь" то сохраняется, но - пустой, т.е. все что в него было заспавнено - исчезает, а порою хотелось бы обратного.

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

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

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

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

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

Возвращаясь к вопросу о получении имени сохранения. Есть способ проще. Даже два.

1) Мы можем сохраниться двумя способами - через меню или через консоль/квик_сейв. Через меню мы можем отследить (как это сделать все понятно надеюсь). А в игре можно попробовать отследить статик, который показывается после сохранения - на нем как раз написано имя сохранения. Сложность алгоритма минимальна

2) Можно при старте игра при помощи FS класса считать все файлы в папке saves (точнее считать имена файлов и дату изменения). Как только мы в биндере актора происходит вызов метода save() то мы взводим флаг и на следующем апгрейде опять просматриваем папку с сохраниениями на предмет изменений. Сложность алгоритма зависит от количества файлов в папке

Freedom

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

_Призрак_, хотя автору вопроса уже вероятно не интересно, но замечу, чтобы кто-то на грабли не наступал:

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

  • Нравится 1

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

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

×
×
  • Создать...