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

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

@Kirgudu, то что math.randomseed результат не возвращает - я знал. Но вот не знал что она действует только для следующей math.random. Вот и добовлял её в локальную переменную.

А отступ обще принятый? Или можно хоть сколько пробелов ставить? А навыков у меня не только в чтении мало...

Ссылка на комментарий
Kober(BRUC), сколько угодно конечно! Можно делать для себя наглядно, чтобы было видно что и откуда.
Возникла такая задача. В гуи окне нужно сделать несколько кнопок. Причем заранее не известно сколько будет этих кнопок. Можно ли делать название кнопки в gui по кускам, например как строку?
local num = 4
local button_name = "button_"..num

То же самое интересует для самого кода, например:

  self.button_1 = CUIButton()
  self.button_1:SetAutoDelete(true)
  self.button_1:Init(x,y,h,w)
  self.button_1:InitTexture("ui\\gz_gui\\ui_gz_icon")
  self.button_1:SetOriginalRect(x,y,h,w)
  self.button_1:SetStretchTexture(true)
  self:Register(self.button_1,"button_1")
  self.back:AttachChild(self.button_1)
  self:AddCallback("button_1",ui_events.BUTTON_DOWN,self.button_1_clicked,self)

button_1 уже не строка, потому как это можно (и можно ли) сделать?

Изменено пользователем Kondr48
  • Спасибо 1
Ссылка на комментарий

Хм, коли начинаем говорить о GUI, давайте расскажу про CUITrackBar() в ТЧ.

 

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

Выдержка из хелпера (для демонстрации результатов моей работы):

 

C++ class CUITrackBar : CUIWindow { --// расширения для класса CUITrackBar позволяют создавать и управлять трек-баром (последнее было невозможно)
    function IsChanged(); --// значение изменилось?
    function SetStep(number); --// устанавливает шаг трекинга
    function GetStep(); --// получает шаг трекинга
    function GetValue(); --// текущее значение
    function SetValue(number); --// установить значение (также меняется позиция ползунка в зависимости от значения)
    function GetBackupValue(); --// получить предыдущее значение
    function SetBackupValue(number); --// установить предыдущее значение
    function GetBtn(); --// получить кнопку в виде объекта CUI3Button
    function GetFrame(); --// получить первый фрейм в виде объекта CUIFrameLineWnd
    function GetFrameD(); --// получить второй фрейм в виде объекта CUIFrameLineWnd
};
Видео-демонстрация конечного результата, чтобы всем было понятно о чем я говорю (поясняю: на видео этот ползунок и есть трек-бар):

 

 

 

По окончанию работ я вспомнил про GUI сна в ЗП, и решил обратиться к классу трек-бара в коде ЗП и с радостью обнаружил, что мои функции получились технологичнее. Да, если кто помнит, я тот, кто потащил функционал в ТЧ, но до конкретных редких классов как этот у меня руки не дошли, разбираюсь с ними только когда мне это нужно.


@Kondr48, да, можно, если неизвестно сколько кнопок будет, то делай через цикл while. Кнопка button_1 в твоем случае это поле, а поле можно получить по ключу, а ключом может выступать любой lua тип. Твоя задача весьма проста, и абсолютно точно реализуема.

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

Ребят, такой вопрос. 

Нужно подменить звуки ходьбы ГГ для определенной локации.

Как бы это сделать?

Укажите хотя-бы, в какую сторону смотреть)

Не соответствует правилам.

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

Нужно подменить звуки ходьбы ГГ для определенной локации.

Как бы это сделать?

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

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

Изменено пользователем HellRatz
  • Спасибо 1
Ссылка на комментарий

@HellRatz, к сожалению, возможности делать что-нибудь в СДК нет.

Просто нужно сделать интересную вещь - зиму на одной из локаций, когда на остальных осень...

 

Если с террейном, снегом, и текстурами НПЦ проблем нет, то вот со всем остальным(деревья,звуки,дома машины) - беда...

 

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

 

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

Ну ладно, посмотрим что ещё народ скажет... 

Не соответствует правилам.

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

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

self:AddCallback(upgrade_icon, ui_events.BUTTON_CLICKED, self.play_repair_sound, self)

Вот как можно при вызове play_repair_sound передать в неё строку? Может есть какие способы?

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

@Kondr48, например так

self:AddCallback(upgrade_icon, ui_events.BUTTON_CLICKED, function() self:play_repair_sound("stroka") end)
  • Спасибо 1
Ссылка на комментарий

Как получить через скрипт размер файла?

Читал руководства по Lua, что-то отдельной функции не нашел...

Не соответствует правилам.

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

@CRAZY_STALKER666, метод seek с аргументом "end" переводит позицию чтения в конец файла и возвращает размер файла.

function fsize (file)
  local current = file:seek()      -- получаем текущую позицию
  local size = file:seek("end")    -- получаем размер файла
  file:seek("set", current)        -- восстанавливаем позицию
  return size
end
 
-- пример
print(fsize(io.open("C:\\test_file.txt")))
Изменено пользователем Charsi
  • Спасибо 1
Ссылка на комментарий

@CRAZY_STALKER666, а можно же сделать несколько пресетов с разным набором звуков и в игре уже менять? Ну или перезагружать конфиг когда посещаешь определённую локацию.

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

@mortan, как я понял, в игре к каждому материалу звук идет - и прописывется он не в скриптах.

Так что пока - думаем дальше...

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

Не соответствует правилам.

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

Как можно затемнить кнопку в скриптовом окне? Визуально показать, что нажатие недоступно?
Мои скудные знания английского, уровень гугл переводчик, подсказали, что, возможно, поможет SetHighlightColor(number), вот только как передать нужный цвет в этот метод? Поиск по форуму и файлам оригинала ничего мне не дал(

---

P.S. Также интересует возможность создания hint окна. То есть окошка, появляющегося при наведении на элемент окна. Текст окошка мне надо сгенерировать в самом скрипте. А план-максимум еще и с картинками) Патч 1.0007

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

 

 

Поиск по форуму и файлам оригинала ничего мне не дал(

Ну да, а в "Справочнике по ф-циям и классам" -> "Оконные классы" видимо рецепты садоводства ?

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

UnLoaded, однако никаких видимых изменений от метода не вижу:

self.btn_yes:SetHighlightColor(255,0,0,0), комбинация 255,255,255,255 тоже результата мне не дала)

P.S. Кнопка если что - текстура, без текста.

---

Есть таблица, в которой в качестве строк переписаны названия элементов окна. (Кнопки, статики)

for i = 1, #table_to_del, 1 do   
     self[table_to_del[i]] = nil
     news_manager.send_tip(actor, "Найден: "..table_to_del[i])
end

Такой вариант не срабатывает, обычно, к примеру, если было:

local maps = CUIStatic()

Потом можно удалить просто:

maps = nil

А как поступить в этом случае?

---

Существуют ли методы, чтобы повернуть статик на определенный угол?

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

@Kondr48, немного не ясно что ты хочешь от кода. Ты собираешься красить кнопку, но красишь текст, текстуру красят другим методом (метки например), а SetHighlightColor красит, очевидно, текст, в случае с кнопкой - на кнопке.

 

По второму вопросу я вообще не понял о чем ты спрашиваешь.

 

Статик можно повернуть методом SetHeading.

 

@SkyLoader, метод называется SetColor (также SetColorAll), а не SetHighlightColor. Например:

void CUITradeWnd::ColorizeItem(CUICellItem* itm, bool 
{
if(!
itm->SetColorAll(color_argb(255,255,100,100));
}

 

Изменено пользователем Карлан
  • Спасибо 1
Ссылка на комментарий

Карлан, по сути я про то и спрашивал, КАК мне покрасить текстуру, лишь уточнил, поможет ли мне этот метод? А так в lua_help есть аж три метода:

SetHighlightColor(number);
и
SetTextColor(number, number, number, number);
и
SetColor(number);

А что касается второго вопроса, как удалить кнопку с окна, по имени строки? То есть есть строка "btn_yes" кнопка была зарегана как self.btn_yes = CUIButton()
P.S. еще бы понять, чем эти три метода друг от друга отличаются.

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

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

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

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

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

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

Войти

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

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

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