singapur22
Поспешное суждение о грави-пушке.
Хотя она сделана на базе оружейного класса, но это совершенно иной предмет, которому аналогов нет.
По сути от оружейного класса требуется возможность обрабатывать кнопки мыши (огонь и прицеливание). В гави-пушке по этим кнопкам происходит захват-удержание и бросок. Ну и по 'кол-ву оставшихся патронов' отслеживается собственно факт броска (выстрел).
Суть ее: любой объект с физ.оболочкой может быть захвачен, т.е. у объекта отключается сила тяжести (объект подвешивается) и этот объект помещается в условный фокус пушки (притягивается/отдаляется). После захвата объект может перемещаться в любом направлении отслеживая фокус пушки. Ну и соответственно бросок/толчок ... Далее фантазии на тему 'после броска ...'
В итоге получился некий манипулятор физ.объектами с отключением их массы ('грави').
Как я понял, SkyLoader'у захотелось чтобы захваченный объект 'смотрел все время на актора' (на грави-пушку). В нынешнем виде объект не меняет своего положения относительно координат x и z (не вращается) при перемещениях его пушкой.
Artos Спасибо за описание. А то все по неё говорят, а мне и посмотреть, что за ... некогда. :-)
Как я понял, SkyLoader'у захотелось чтобы захваченный объект 'смотрел все время на актора' (на грави-пушку). В нынешнем виде объект не меняет своего положения относительно координат x и z (не вращается) при перемещениях его пушкой.
Нет. Ему нужно нечто иное. С грави-пушкой даже близко не связанным проектом. Отвечу цитатой в личку.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Исходя из твоих слов: "... мы создаем какие то данные, либо получаем их, и заполняем этими данными окно." - получили неким образом массив локаций, для телепортации на них актора (список упростил):
local tTeleports = {
[ 1] = l01_escape,
[ 2] = l02_garbage,
...
[17] = l12u_control_monolith,
[18] = l12_stancia_2
}
Массив привожу в упрощенном виде, в оригинале в нем и позиция для спавна и направление ...
В данном контексте для создания листинга это не важно.
Основной код создания листинга по элементам имеющегося уже массива это:
--/ Создаем окно для всего списка локаций
local list = CUIListWnd() --/ создаем объект окна класса 'листинга'
list:SetAutoDelete(true)
list:Init(10,25,135,300) --/ инициируем его в заданых координатах (x,y,width,height)
list:SetItemHeight(16) --/ высота каждой строки листинга
list:SetFont( GetFontLetterica16Russian() ) --/ тип шрифта строк листинга
list:SetTextColor(255,216,188,140) --/ цвет текста строк
list:EnableScrollBar(true) --/ разрешаем скролл-бар при превышении заполнения окна
list:ShowSelectedItem(false) --/ пока не показываем выделение --/ итерируем по массиву локаций:{[ i]=level_name}
for _,v in ipairs(tTeleports) do
local item = CUIListItemEx() --/ строка i-ой локации
item:SetWndRect(0,0,130,18) --/ x,y,width,height
item:InitTexture("ui\\ui_scb_scroll_box") --/ текстура подложки
item:SetStretchTexture(true)
item:SetHighlightColor(GetARGB(255,255,150,0)) --/ цвет текста при наведении
item:SetSelectionColor(GetARGB(255,200,200,250)) --/ цвет текста выбраной локации
item.map = v --/ запоминаем имя локации дл**5002618d69873ce82a42**
else
self.act0:Show(false) --/ скрываем кнопку действия
end
end
function UI_TabController:OnBtnAction0()
if this.Check_StartGame() then --/ телепортируем только в запущенной игре
local iSelect = self.map_list:GetSelectedItem() --/ индекс выбранной строки
if iSelect >= 0 then
local item = self.map_list:GetItem(iSelect) --/ объект выбранной строки
if item then
local sLevelName = item.map --/ имя локации
for _,v in ipairs(tTeleports) do
if v.map == sLevelName then --/ на текущей локации?
if sLevelName == level.name() then --/ меняем позицию на заданную
db.actor:set_actor_position(v.pos)
db.actor:set_actor_direction(v.dir)
else
this.Get_Teleport(sLevelName, v.pos) --/ вызываем алгоритм телепортации
end
self:Quit() --/ выход
end
end
else
self.act0:Show(false) --/ скрываем кнопку действия
end
end
end
end
[/code]
Artos Осмелюсь добавить, что в паре с кнопкой выбора "ОК" желательно использовать и событие двойного клика по элементу списка (пользоваться будет значительно удобней). ui_events.WINDOW_LBUTTON_DB_CLICK устанавливаемый на список.
А если ещё и добавить клик кнопки "ОК" при нажатии "Enter", будет вообще полный набор событий.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22 О грави-пушке:
Было видео на АМК-сайте, но ... почистили. По мотивам и erlik сделал вариант и у меня в сборке есть (для развлечения) эта поделка. Можно спорить о ее востребованности в игре, но ... это скорее очень неплохое (ИМХО) пособие для модмейкеров - как обращаться с разнообразием векторных методов и применения импульсов.
О листинге:
Я сделал иначе с выбором из листинга:
1. Нужный пункт выбирается обычным кликом по выбранной строке и ... появляется кнопка действия.
2. Отработка производится уже нажатием кнопки действия (аналог 'OK').
Т.о. и исключаются случайные нажатия (по сути аналог дабл-клика, только разнесенного) и дается время на 'подумать'.
Такое разнесение является заодно и проверкой - актуален ли данный пункт или он 'бутафорский' (т.е. задел на будущие некие условия, которые могут блокировать некие локации).
P.S. Вторая картинка с активированной кнопкой для выполнения выбранной телепортации:
Struck
А вот с 'переносом' длинных текстов огорчу. Данная функциональность доступна только для объектов класса CScriptXmlInit(), т.е. созданых с использованием этого класса и применением соотв.тэгов именно при применении xml-файла.
Так что или использовать xml'ки или 'резать' текст самому и склеивать из неск.окон.
Или же ... а) (самое разумное) применять такие строки, чтобы влезали в окно листинга, б) усекать длинные строки, вылезающие за окно. По сбору кусочков - я пас, этот вопрос не интересен. Для сбора кусочков в единое можно банальные 'статики' (CUIStatic()) использовать иль тот же шаблон из xml'ки.
Рядом есть 'ui_pda_frame_sub.ini', который похоже имеено аналогичные кусочки собирает - но это уже тебе самому поисследовать, иль кто иной ответит. :-)
Artos то есть варианта два, либо создавать для каждого объемного текста своего окно, либо писать и "склеивать" кучу статиков?
А про сбор кусочков предполагаю что есть вариант по оптимальней, подожду может и вправду у кого желание появится пояснить.
Struck На счёт мультиплексирования. К твоему глубочайшему сожалению, это возможно только через установку соответствующего аргумента в теге xml файла.
аргумент: complex_mode="1"
И на счёт сбора рамки. Ты ММ юзал? Там все фоновые рамки на их основе и собраны.
Классы CUIFrameWindow() и CUIFrameLineWnd() отвечают за комплексное изображение. Где первый класс отвечает за комплексирование в двух направлениях (по горизонтали и по вертикали), а второй только по горизонтали. Плюс данных классов том, что они не растягивают изображение до размеров виджета, а производят составление общей картинки из набора указанных элементов изображения. Соответственно, размеры можно задавать любые, и общая картинка при этом искажаться не будет.
Короче юзай ММ, там всё сам разберёшь.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
MRN$ Функции находятся в заранее определённом файле? Или местоположен**5001618d69873ce82a42**любая приставка, или без неё"]
if func and type(func) == "function" then
func()
end[/code]
Если же файл заранее не известен, то при этом нужно будет итерировать элементы окружения _G и если элемент является таблицей, то производить выше приведённую операцию,
где fileName будет являться элементом окружения. В данном случае уникальная приставка в именх функций будет обязательна, дабы не произошло никаких конфликтов.
отредактировал(а) singapur22: 02-06-2011 17:39 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Shape :friends
Благодарствую - пашет... singapur22 :friends
Файлы как обычно в папке скриптс, а функции в них...
твой вариант щас то-же попробую...
Имена функций - известны, неизвестны имена файлов.
loadstring(filename.."."..funcname.."()")() - вылетает если не находит файл скрипта...
Нужна проверка файла скрипта на существование, тогда можно запустить "loadstring".
Как безвылетно проверить файл скрипта на существование?
"итерировать элементы окружения _G"?
По сути, можно через итерацию окружения. Но в данном случае, нужно быть уверенным в том, что он туда загружен, что происходит не со всеми файлами. По крайней мере, не сразу. Многие находят выход из данного положения, загружая нужные файлы в окружение принудительно, при старте игры.
Можно через класс FS, но тут я не уверен в том, что данное действие не приведёт к потере новых файлов из виду. Данный класс вообще криво работает, причём на разных ОС могут быть свои глюки. Самый верный вариант, это вывести все требуемые функции в определённый файл, к которому и обращаться при данном действии.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Здравствуйте. Подскажите как сделать большой EditBox? Чтобы можно было писать несколько строк в боксе. Пытался тупо сделать бокс большим размером, но вписать получается только одну строку
Ma$ter класс CUIEditBoxEx(). За текстуру указывать набор типа frame (комплексное изображение из 9 текстур). Данный класс эдит-бокса работает по схеме мультиплексирования. Но есть одна заморочка. курсор эдита функцианирует так, будто это однострочный эдит-бокс. В итоге уходит непонятно куда, хотя текст вводится нормально (многострочно). Я ещё не полностью разобрался с данным классом. Так что ковыряй дальше сам.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
А вот интересно, можно ли как нибудь сделать, чтобы по нажатию на ВВОД текст переходил на новую строку? Как в блокноте например. А то невозможно перейти на новую строку не закончив старую
Ma$ter Нет. Видимо класс не доделан, изза потери в нём необходимости.
Раз уж на то пошло, и тебе необходим мультиплекстный редактор текстов. То создай его сам, на основе CUIStatic(). Работа не простая. Но если получится, многие тебе будут только благодарны!
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Mehanik Yar Если спавн производится через all.spawn, то зафиксировать можно прописав в конце секции: fixed_bones = список костей, через запятую
Объект при этом должен быть физическим.
Если же спавн производится через скрипт. То для этого имеются соответствующие методы. О данных методах можешь распросить Erlik'a. (найдёшь его на предыдущей странице)
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Добавил модельку ноя в игру (скачал с инета). Вроде сделал все правильно: ogf в meshes там в папке actors создал новую папку "noy" туда и сунул ogf, в textures снова создал папку noy туда сунул все фаилы dds. В character_desc_escape.xml Волку прописал эту модельку получилось actors\noy\noy больше нечего неделал. Начинаю новую игру и получил вот такой лаг:::
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
Первое что приходит это либо текстуры надо кидать в другую папку либо в профиле волка есть еще одна строка с сылкой на текстуры.
добавлено спустя 23 секунд
угадал? и что делать?
добавлено спустя 13 минут
подожди! act_faces_4_04 такого фаила нет я по каталогу с игрой поиском прошолся!
отредактировал(а) serega_zombi_stalker: 03-06-2011 11:51 GMT3 час. 1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
serega_zombi_stalker Аргументы лога говорят о том, что:
1. текстуры к модели должны лежать в папке gamedata\\textures\\act\\, а не как ты положил, непонятно откуда взявшуюся папку noy.
2. одна из требуемых текстур должна обзываться "act_faces_4_04.dds"
Дальше, если будут дополнительные требования, следовать по выводимым аргументам.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
кстати кто нибудь знает какой гулаг у шустрого разведчиков и толика????
Как то давно менял им групировку и чтоб они нерасходились менял групировку гулага. Сейчас снова поменял, но какой гулаг забыл....кстати гулаг лагеря новичков на них недействует.
добавлено спустя 37 минут
уже ненадо))) я сам уж нашел
отредактировал(а) serega_zombi_stalker: 03-06-2011 13:27 GMT3 час. 1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
Please, help me, peopls! После установки мода АМК 1.4.1 на лицуху 1.006 выдает лаг на рабочий стол с такой вот ерундовиной (сообщение XRay Engine "XR_3DA.exe caused BREAKPOINT in module "D:\Program Files\GSC World Publishing\S.T.A.L.K.E.R\bin\xrCore.dll" at 001B:006BCC85, xrDebug::backend()+165 byte(s)")
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.