Милена - интерпретатор текстовых игр на LUA

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Вопросы по разработке

Сообщений 31 страница 54 из 54

31

Александр, подскажите как  в "милене 2.5" конопку "меню(Milena)" перенести в другое место экрана? И можно ли менять ее под свой стиль (оформление) игры?

0

32

Вообще, можно.

local menu = element.get('div[type="menu_content"]')
if menu then
menu.style.left = "*";
menu["align-popup"] = "bottom"
end

Так можно передвинуть кнопку в правый верхний угол экрана, и сделать, чтобы меню выпадало снизу. Делать это нпдо в локации common

Можно изменить картинку кнопки, но для этого нужно будет дописать в milena.style что-то вроде

div.menu_button
{
background-image: url(ВАШ_ПУТЬ_К_КАРТИНКЕ);
}
div.menu_button:hover
{
background-image: url(ВАШ_ПУТЬ_К_КАРТИНКЕ);
end;
}

*просто изменять псевдо-классы, из кода пока нельзя

Отредактировано Александр Граф (2010-08-07 23:11:20)

0

33

А локация common - это главная локация игры?.
и где расположен файл milena.style?

Отредактировано Lis (2010-08-07 23:38:12)

0

34

Стоп. common это локация, которая вызывается до текущей локации.

А milena.style это не файл, а переменная. Тоесть делается вот так:

milena.style = (milena.style or "")..[[div.menu_button
{
background-image: url(ВАШ_ПУТЬ_К_КАРТИНКЕ);
}
div.menu_button:hover
{
background-image: url(ВАШ_ПУТЬ_К_КАРТИНКЕ);
end;
}]]

Правда, пока не будет работать, потому что я подумал - чтоб работало, надо немного поправить, и поправил. У себя. Но вот сейчас сделал небольшой модуль, чтобы всё-таки работало.

*Модуль - модуль, который вносит исправления при подключении

0

35

тоесть подключаем модуль restyle.mmod и можно менять стиль?..
А можно в коде прописать  так что бы основное меню вызывалось через клавишу ESC как в Milena Lite 2 ?

0

36

Да. Подключаем его, и меняем.
В коде, конечно, можно прописать всё, другое дело, что придётся много писать. Лучше я позже добавлю возможность переключения между двумя видами.

0

37

В основном файле подключаю фаил с локациями - include('location/begin.msf') потом с него пытаюсь вызвать локацию через функцию proc 'begin' . Но локация незагружается. Может сейчас это делается подругому?

0

38

Нет, работает так же. Проверьте:
1) возможно, после названия локации begin в файле стоял пробелы или знаки табуляции. Если это так, то их нужно убрать.
2) имя локации отличается от того, что в файле регистром. Если так, нужно привести к одному регистру.
3) и вообще, есть ли такая локация в файле begin.msf? Если в файле одна локация, её всё равно нужно как-то назвать, названия локаций не генерируются из имён файлов. (это для справки)

0

39

Нашел причину)))....Оказывается у меня не загружалась локация, потому-что она была в кодировке UTF-8. После того как перевел локацию  begin.msf в кодировку ANSI она запустилась..При этом главный файл был в кодировке ANSI

0

40

Надо чтоб всё было в ANSI. UTF-8 пока не читаем)

0

41

пускай будет в ANSI это не так и важно))... Александр, а Вы немогли бы в следующей версии добавить на форму "Милены" кнопку сворачивания окна?

0

42

Добавлю. Тем более, я немного ошибок в модулях нашел, но не критичных. Так что в субботу будет исправленная версия. с кнопочкой:)

0

43

Как правельно задавать размеры окна? Пишу window.width = 800 window.height = 600  window.resizeable = not window.resizeable Но программа не реагурует на эти команды, как правельно задавать парамерты окна?

0

44

нужно проверить не находится ли окно в полноэкранном режиме; если так, нужно перейти в оконный режим.

0

45

Спасибо!.. А подскажите как теперь меняется фоновая картинка меню. Раньше это было text.bgimage ="image.jpg" . теперь через эту функцию меняется фон главного окна. А как задать фон меню, когда нажимаешь ESC ?

Отредактировано Lis (2010-08-18 18:51:54)

0

46

standard.menu.style
содержит css стиль окошка. чтобы поменять фон, нужно сделать так:
standard.menu.style = "background-image: url(путь к картинке);"
это добавляет больше возможностей:) ещё почитайте про expandable background. пригодится

0

47

Спасибо, Александр!. А где про это можно прочитать?

0

48

на сайте htmlayout, точной ссылки я не дам, или можно посмотреть примеры на эту же тему. тоже в htmlayout'e

0

49

подскажите, как добавить предмет в инвентарь и при этом вывести его на экран (название предмета) в определеную область экрана?

PS. Александр, большое спасибо за новый релиз... :flag:

0

50

Итак. Есть два способа.

1) Напечатать всё это в локации common, задав до этого стиль для элемента div с классом inv:

Код:
:init
require "new.inventory" --подключаем модуль инвентаря
milena.style = 'div.inv{position:fixed; width:w; top:t;}' --Чисто для примера, нужно ставить свои значения
endl
:common
--cls теперь нужен обязательно
cls()
p '<div .inventory>'
inv.get('ничего нет.')
p '</div>'
endl

2) Воспользоваться новыми возможностями, и не печатать по сто раз одно и то же (это немного сложнее, правда, но, мне кажется, красивее). Определение стиля оставляем такое, какое оно есть.

Код:
:init
require "new.inventory" --подключаем модуль инвентаря
require "dom" --подключим модуль dom для удобства
milena.style = 'div.inv{position:fixed; width:w; top:t;}' --Чисто для примера, нужно ставить свои значения
--Но нам понадобится новая функция, которая возвратит текст - то, что нужно вывести на панели инвентаря
function getinv(pr)
	inv.init()
	local result = ""
	pr = pr or inv.prefix --Указанный или текущий префикс
	for i, v in ipairs(inv.items) do
    if v.prefix==pr then --Вещи для указанного префикса
    	result = result..('<a .button href=%q>%s</a><br>'):format(v(), v()) --Добавляет в выводимый текст ссылку на вещь в инвентаре
    end
	end
	return result
end
endl
:common
--cls теперь нужен обязательно
cls()
--Выводим поле под инвентарь
if not dom 'div.inventory' then
	dom['body']:set_html('<div .inventory/>', 2)
end
endl
:common1
	if dom 'div.inventory' then
    --Заменяем текст на панели инвентаря
    dom['div.inventory']:set_html(getinv(), 0)
	end
endl

0

51

И сразу возникла небольшая проблема, даже джве (сверху новая версия, снизу - старая):
не захотела работать таблица text, и вместо зеленого на черном получается стандартный черный на белом текст; плюс возникли проблемы доступа к таблицам, которых раньше не было
http://rghost.ru/4555034/thumb.png
http://rghost.ru/4555034
Или это я что-то делаю не так?

Отредактировано Andreas (2011-02-27 12:36:32)

0

52

а можно код? так как

Код:
text.color = green
text.bgcolor = black

прекрасно работал на обеих версиях (скачанной и моей новой, которую никто не видел))

И, кстати, не "одеть", а "надеть". У меня раньше тоже такое было. Одеть можно кого-то, а надеть можно что-то.

0

53

Вот такой пример кода

Код:
require "new.inventory"
inv.add2("Thing1","INV1")
inv.add2("Thing2","INV2")
inv.add2("Thing3","INV3")
:loc1
pnl(#inv.items)
endl

В результате ошибка "attempt to index global "inv" (nil value)", хотя в старой версии все работало.

0

54

Всё стало немного строже в новой версии. Нужно явно указывать локацию (пусть даже без имени)

Код:
:
require "new.inventory"
inv.add2("Thing1","INV1")
inv.add2("Thing2","INV2")
inv.add2("Thing3","INV3")
:loc1
pnl(#inv.items)
endl

будет работать

0