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

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

Добрый день. Где же я упустил ошибку?:

local number = 10
say_tbl_one_ru = {  -- Таблица с русскими ответами. 'Угадай число';
"Не верно. Чуть больше.",
"Не верно. Чуть меньше.",
"Вы угадали! Число равно:"
}
local complexity = 'esay' -- 'esay' - Легко; 'normal' - Срдне; 'hard' - Хардкор; 'random' - Рандомное число от 100, до 10000

function gl()
if complexity == 'esay' then
local cly = 25
elseif complexity == 'normal' then
local cly = 100
elseif complexity == 'hard' then
local cly = 1000
elseif complexity == 'random' then
local ran_data = math.randomseed(os.time())
local ran_data = math.random(100, 10000)
local cly = ran_data
local num = math.random(1, cly)
if number < num then
print(say_tbl_one_ru[1])
elseif number > num then
print(say_tbl_one_ru[2])
elseif number == num then
print(say_tbl_one_ru[3])
end
end
end

gl()
Изменено пользователем Kober(BRUC)
Ссылка на комментарий

@Kober(BRUC)

1. "local cly = 25" и т. п., если не ошибаюсь, видно только в пределах своей ветки if ... else. Следует объявить переменную до if, а внутри только задавать значение.

2. math.randomseed результат не возвращает, а только задаёт случайное смещение для последующего math.random. Присваивание переменной в данном случае лишнее.

3. Выбор фразы для печати ты делаешь в одной из веток внутри if, а не за пределами оного. Конкретно, печать у тебя происходит только в случае опции "random".

4. Судя по всему, навыки чтения кода у тебя не очень высокие. В этом случае, чтобы делать меньше ошибок, будет хорошей практикой использовать отступ для вложенных элементов.

local number = 10
say_tbl_one_ru = {  -- Таблица с русскими ответами. 'Угадай число';
  "Не верно. Чуть больше.",
  "Не верно. Чуть меньше.",
  "Вы угадали! Число равно:"
}
local complexity = 'esay' -- 'esay' - Легко; 'normal' - Срдне; 'hard' - Хардкор; 'random' - Рандомное число от 100, до 10000
 
function gl()
  if complexity == 'esay' then
    local cly = 25
  elseif complexity == 'normal' then
    local cly = 100
  elseif complexity == 'hard' then
    local cly = 1000
  elseif complexity == 'random' then
    local ran_data = math.randomseed(os.time())
    local ran_data = math.random(100, 10000)
    local cly = ran_data
    local num = math.random(1, cly)
    if number < num then
      print(say_tbl_one_ru[1])
    elseif number > num then
      print(say_tbl_one_ru[2])
    elseif number == num then
      print(say_tbl_one_ru[3])
    end
  end
end
 
gl()

local number = 10
say_tbl_one_ru = {  -- Таблица с русскими ответами. 'Угадай число';
  "Не верно. Чуть больше.",
  "Не верно. Чуть меньше.",
  "Вы угадали! Число равно:"
}
local complexity = 'esay' -- 'esay' - Легко; 'normal' - Срдне; 'hard' - Хардкор; 'random' - Рандомное число от 100, до 10000
 
function gl()
  local cly
  if complexity == 'esay' then
    cly = 25
  elseif complexity == 'normal' then
    cly = 100
  elseif complexity == 'hard' then
    cly = 1000
  elseif complexity == 'random' then
    math.randomseed(os.time())
    cly = math.random(100, 10000)
  end

  local num = math.random(1, cly)
  if number < num then
    print(say_tbl_one_ru[1])
  elseif number > num then
    print(say_tbl_one_ru[2])
  else
    print(say_tbl_one_ru[3])
  end
end
 
gl()

 

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

@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
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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