Viнt@rь 50 Опубликовано 9 Ноября 2012 Поделиться Опубликовано 9 Ноября 2012 (изменено) (ЗП)Нужно добавить текст в текстовое поле(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" тоже не катит... правда символ сам не выводит, но и строку не переносит Изменено 9 Ноября 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Charsi 440 Опубликовано 9 Ноября 2012 Поделиться Опубликовано 9 Ноября 2012 Viнt@rь, задай в конфиге текстового поля параметр complex_mode="1" либо используй метод SetTextComplexMode(boolean). 1 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Artos 99 Опубликовано 9 Ноября 2012 Поделиться Опубликовано 9 Ноября 2012 (изменено) Viнt@rь, вопрос уже неоднократно обсуждался на различных форумах. Не нужно ожидать от каждого оконного класса то, что присуще другому классу... Распарсивание строк текста заложено не в классы, а выполняется движком для тех классов, которые прописали разработчики (коряво пояснил, но надеюсь смысл понятен...). Так что остается только или делить самому свою строку на куски и выводить в отдельных окошечках или применять соотв.классы (если такое возможно). В примере из ui_load_dialog.script используется класс CScriptXmlInit, т.е. класс, которому прописан наиболее полный функционал/методы. Charsi, параметр complex_mode="1" иль метод SetTextComplexMode(boolean) задают режим (не)переноса строки по мере ее заполнения (по переполнению), а не по знакам "перевода каретки" (\n), т.е. "указать" где делать перенос строки не удастся. P.S. Возможно ошибся, подзабыв что-то, но ... вероятно в этом повинно твое (Viнt@rь) упоминие в вопросе именно класса CUITextWnd (большинство именно скриптовых классов не парсят текст по переносам), а на самом деле используешь тот же CScriptXmlInit. Изменено 9 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Viнt@rь 50 Опубликовано 9 Ноября 2012 Поделиться Опубликовано 9 Ноября 2012 (изменено) 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") ... Изменено 9 Ноября 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Artos 99 Опубликовано 9 Ноября 2012 Поделиться Опубликовано 9 Ноября 2012 (изменено) Viнt@rь, объект-то окажется от схожего классу CUITextWnd, но он то в твоем и случае "от родителя" и унаследует родительские свойства, т.е. возможность читать xml-тэги из шаблона, а не только скриптовые методы. И мог бы воспользоваться и поиском: #2742 и далее... Изменено 9 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 (изменено) Никто не знает, можно ли как то в скриптах в моменте сохранения игры отловить название сейв-файла (*.sav) куда будет произведено сохранение? Зарание спасибо. Есть ли способ в скриптах в момент сохранения узнать имя *sav-файла, то-есть имя файла с сохранением? И ещё вопрос на стыке нескольких тем, но кто нибудь пробовал играть у трупов НПС простые анимации, но чтобы при этом рэгдол ещё работал? Изменено 12 Ноября 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 (изменено) *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, ...), Однако зачем такие "опыты"? Воскрешение трупов и превращение их, например, в зомби (ходячие трупы) - давно доступно... Изменено 12 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 Artos, к сожалению, быстрое сохранение так не отловить. 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 (изменено) malandrinus, ну алгоритм то по "отлову" имени конечно чуть посложнее должен быть, и вполне можно и квик-сэйвы отлавливать. Любой момент сохранения отлавливается в биндере актора (в соотв.методе) и, если имя для сэйва не получено из выше указанных мест/скриптов - то остается только либо квик-сэйв (user_name().."_quicksave"..saved_game_extension), либо "ручками" задано. К сожалению, в вопросе нет ни намека на цель подобного отлова имени... и если уж очень нужно и позволительно чуть позже чем "в момент сохранения" - то парсинг лог-файла всегда позволит заполучить имя. Примечание: если даже и "штатный" лог-файл игрок захочет отключить - можно и в "свой" писать... ;-) Изменено 12 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 (изменено) Оффтоп: Это нормально что форум в окно ответа вместе с текстом копирует элементы сайта? Не могу даже ник выделить без копирования фона (!) сайта. malandrinus правильно сказал по поводу быстрых сохранений, не стоит ещё забывать и автосейв и прочее. Я просто расчитывал что может быть имя сейва хранится в нэт-пакете, передаваемом в скрипты. Вариант про парсинг лога был, но он не совсем подходит, т.к узнать имя файла нужно прямо в момент сохранения а не до\после. Вообщем ладно, я уже отказался от этой затеи, было просто интересно узнать ответ. Вообще сейчас делаю хранилище для записи\загрузки значений во время сохранения, сперва думал доделать старую систему записи в текстовый файл и для этого хотелось получать имя сохранения (сейчас у меня имя текстового файла - случайный набор чисел). Но щас пробую адаптировать систему записи в custom_object, которую тут давно уже обсуждали. Просто с ней возни больше. По поводу трупов и анимаций была идея через них сделать отрывание конечностей при смерти у персонажей. (через анимации скрывать нужный участок тела персонажа и спавнить на это место "мясо") Через подмену моделей будет слишком много возни. Изменено 12 Ноября 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 Shoker, Так при чём здесь анимации? Тебе кости надо скрывать/показывать. Вот только настраивать визуалы всех неписей - работёнка та ещё. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 (изменено) *Shoker*, (маленькая ремарка) - "не стоит ещё забывать и автосейв и прочее" полностью подпадает под уже выше описанное, т.е. под "штатный" вариант создания сэйвов. Ну а про форумный копипаст - это так у всех ;-), твой броузер вместе с движком форума копипастят со всеми тэгами и вытворяют с ними что им вздумается... Если так уж хочется скопипастить - делай, например, через тот же блокнот, т.е. скопированное вставляешь в блокнот и оттуда, уже без тэгов, копипастишь "очищенный" текст. Иль, если браузер позволяет - выбирай в меню "скопировать как текст..." Изменено 12 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 (изменено) Shoker, Так при чём здесь анимации? Тебе кости надо скрывать/показывать. Вот только настраивать визуалы всех неписей - работёнка та ещё. Штатного метода вроде нет же, а модифицировать движок тоже не представляется возможным. + при скрытии костей ведь геометрия тоже пропадёт и в теле НПС будет дырка, а анимацией это эту дырку можно "сшить" Изменено 12 Ноября 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 Shoker*, вообще в контексте игры - Анимация — процесс придания способности двигаться и/или видимости жизни объектам и мёртвым телам (например, зомби — анимированный труп), поэтому совершенно не понятно как "мясо" может анимировать и "анимацией сшивать дырки"...Учитывая твое пояснение... и то, что это уже никаким боком не относится к теме топика (скриптам), предлагаю, дальнейшее (если оно будет) перенести в топик ... типа ковырялок "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 Shoker, а модифицировать движок тоже не представляется возможным. эм.. Религия не позволяет? =) Для ТЧ уже есть такие возможности. Не помню только, делал их для оружия или для любого объекта. Однако, при желании эту правку можно откопать и задействовать. + при скрытии костей ведь геометрия тоже пропадёт и в теле НПС будет дырка, а анимацией это эту дырку можно "сшить" Теоретически да, если движок поддерживает не скелетную анимацию, в чём я не уверен. По моему не поддерживает. Чисто же движением костей ты такого эффекта не добьёшься. Со скрытием костей же всё просто. Одну кость скрыть, другую показать (которая дыру заткнёт), Хотя это всё конечно в теории. На практике придётся менять все стопятьсот моделей сталкеров. Вот поэтому такие фишки обычно присутствуют в играх, где тела неписей отдельно, а одежда отдельно. В движке третьего фола к примеру. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 (изменено) malandrinus, не хотелось бы поддерживать уже начавшийся оффтопик, но не удержусь от реплики, поэтому скрою спойлером: Учитывая желание *Shoker*'а: "идея через них сделать отрывание конечностей при смерти у персонажей" - то сокрытие одной кости у модели и показ другой, как раз не решит задачу. Очевидно требуется не подменять одну кость на другую, а именно скрывать "оторванную" и, не показывать другую кость модели, а на месте "скрытой" кости показывать "оторванный" от модели объект (заспавненный) с таким же видом как и скрытая кость . Именно тогда можно будет именно "оторвать", и, судя по упоминанию о "рэгдол" в вопросе, вероятно, еще хотСа, чтобы эти оторванные конечности в суставах "анимировали"... ;-) Примечание: как бы ресурс АМК не забанили бы (не включили в черный список) ... за обсуждение способов создания расчлененок и т.п. Изменено 12 Ноября 2012 пользователем ColR_iT "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Malandrinus 615 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 Artos, ну если уж уважаемые конторы, типа Беседки, озаботились созданием расчленёнки, то почему бы и нем не побеседовать на эту тему? =) Вообще конечно задачу можно решить по-разному. Можно было бы попытаться что-то покрутить с разрушаемыми объектами. Т.е. подменить объект при смерти на разрушаемый с визуалом сталкера. Но тогда пропадёт инвентарь. Если же сформулировать решение с костями полностью. Мы в этом случае естественно имитируем процесс. Для решения общей задачи надо решить две подзадачи: 1. Надо убрать оторванную конечность. Это как раз и решается с помощью костей. Кость руки, к примеру, скрывается, а на её месте показывается кость с обрубком. 2. Надо создать отдельный объект конечности на уровне. Это естественно уже к костям отношения не имеет. P.S.: хотя лично мне эта фишка с расчленёнкой всегда казалась сомнительной Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Artos 99 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 (изменено) malandrinus, Про "бан" я конечно пошутил, но ... дело не в том что кто-то где-то тоже подобное обсуждает, а в том, что с 1-го числа этого месяца заработал закон (см. о черных списках Роскомнадзора) и... судя по тому как и с кем это уже "срабатывает" - в шутке может оказаться и частица предвидения. ;-) Крупнейший российский торрент-трекер Rutracker.org попал в черный список Роскомнадзора. Как сообщается в блоге файлообменника, владельцы ресурса получили уведомление, что на одной из страниц находится запрещенная информация, которую нужно удалить в течение суток. Речь идет о раздаче «Энциклопедии суицида». В сообщении Rutracker говорится, что эта раздача была удалена, о чем уведомили Роскомнадзор. Однако электронное письмо вернулось с пометкой rejected (отклонено). За минувший день Rutracker стал уже третьим популярным сайтом, попавшим под прицел Роскомнадзора. Ранее в черный список попала интернет-энциклопедия «Луркоморье» и онлайн-библиотека «Либрусек». В обоих случаях это было сделано по запросу ФСКН. Наркополицейские нашли на этих сайтах пропаганду наркотиков. Владельцы «Луркоморья» согласились убрать спорную статью. НТВ.Ru напоминает: с 1 ноября Роскомнадзор запустил сайт zapret-info.gov.ru. Там составляется список интернет-ресурсов, уличенных в пропаганде наркотиков и самоубийств и распространении детского порно. Если сайт после уведомления не удалит запрещенную информацию, его заблокируют без решения суда. И тоже, считаю сомнительным интерес к созданию подобных "фишек" в модах, и мне малоинтересен. И даже более, считаю моддмейкеров занимающихся подобным - самопиарщиками не брезгающими любыми способами, т.к. немало т.н. фанатов будут "кипятком писать" и восторженно визжать, если им дать в игру подобное. :-( P.S. Кстати, спасибо за невольную наводку, может и пригодится. Твои слова "Но тогда пропадёт инвентарь" попробовал, по своей дурной привычке, проанализировать и... Вспомнилось, что у монстров после сэйва "инвентарь" то сохраняется, но - пустой, т.е. все что в него было заспавнено - исчезает, а порою хотелось бы обратного. А, вот если по месту трупа монстра (иль подмененного на разрушаемый объект) спавнить фейковый невидимый ящик с настройками, чтобы говорил о себе что "это труп монстра" - то в него можно и перекладывать и хранить. Т.е. можно с достаточным приближением имитировать, что валяется именно труп и именно с инвентарем, ну и т.д. в зависимости от др.задач... И вот тут уже, учитывая что и в оригинале спавнятся ("отрываются") копыта, глаза иль иное - расчлененка может быть чуток и подкреплена манипуляциями по скрытию костей. Изменено 12 Ноября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
_Призрак_ 11 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 Возвращаясь к вопросу о получении имени сохранения. Есть способ проще. Даже два. 1) Мы можем сохраниться двумя способами - через меню или через консоль/квик_сейв. Через меню мы можем отследить (как это сделать все понятно надеюсь). А в игре можно попробовать отследить статик, который показывается после сохранения - на нем как раз написано имя сохранения. Сложность алгоритма минимальна 2) Можно при старте игра при помощи FS класса считать все файлы в папке saves (точнее считать имена файлов и дату изменения). Как только мы в биндере актора происходит вызов метода save() то мы взводим флаг и на следующем апгрейде опять просматриваем папку с сохраниениями на предмет изменений. Сложность алгоритма зависит от количества файлов в папке Freedom Ссылка на комментарий
Artos 99 Опубликовано 12 Ноября 2012 Поделиться Опубликовано 12 Ноября 2012 _Призрак_, хотя автору вопроса уже вероятно не интересно, но замечу, чтобы кто-то на грабли не наступал: Имеется основной недостаток как у отлова по кастом-статику, так и по чтению файлов из папки сэйвов - оба метода пост-фактум, т.е. не в момент создания сэйва, а уже после него. Если подразумевается в сам сэйв (куда-то в переменные) записывать его имя или сразу в игре что-то от него зависит - то оба предложенных способа уже бесполезны. 1 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти