RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2435479 views

svandrus:

Действительно просто. Сам бы я до такого не додумался. Спасибо. Тогда еще вопрос. Зачем нужен оператор set? Насколько я понимаю, он просто устанавливает значение для переменной, т.е. set a = 3 это то же самое, что a = 3. Или нет?

Старое наследие, вроде был ещё оператор let. Все эти операторы эквивалентны, можно писать просто a = 3. См. справку.

Я так и думал. Просто смущало то, что никто бы не стал добавлять какие-то операторы просто так.

svandrus,
ну не совсем “просто так”. Байт взял пример с Бэйсика.

Такой вопрос:
Можно ли в AeroQSP убрать полупрозрачный фон во время WAITa? Если да, то как?

Народ подскажите как на одной локации правильно сварганить сложный диалог между гг и нпс?

Asbest1982:

Народ подскажите как на одной локации правильно сварганить сложный диалог между гг и нпс?

Насколько сложный? И сколько таких диалогов планируется в игре?

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

if состояние_диалога['Старик'] = 0:
  *PL Здесь начало диалога
  act '1':
    состояние_диалога['Старик'] = 1
    gt $curloc
  end
end
if состояние_диалога['Старик'] = 1:
  *PL Здесь ещё что-то
  act 'ABCDEF':
    состояние_диалога['Старик'] = 'abc'
    gt $curloc
  end
end

Вместо 1,2,abc лучше использовать текст, который позволяет понимать, о чем речь. Типа ‘спросил про лес’.
Ещё можно записывать что-то вроде узел_диалога_посещен[’Старик, спросил про лес’] = 1, если для логики диалога требуется это знать.
Если диалог повторяемый, важно сбрасывать состояние в ACT’е перехода к диалогу.

P.S. Чаще всего есть более простые и удобные решения.

Этот вопрос есть в FAQ. Диалоги

Nex,
Молю о помощи с навигатором, а то я уже не знаю, что и делать. У меня была проблема с позиционированием элементов и на первый взгляд что в “gameAwesomium.html”, что в “game.css” все было нормально. Поэтому я решил пойти методом исключения и понемногу удалять все, что не касается окна основного описания и дальше, пока не дойду до так сказать основания. В итоге “gameAwesomium.html” в “body” все выглядит так:

Spoiler
<div id="qsp-wrapper-main">
  <div id="qsp-scroller-main" style="border: 8px solid black;">
   <div id="qsp-main">
    <!--Загрузка игры...-->
   </div>
  </div>
</div>

А в “game.css” так:

Spoiler
#qsp-wrapper-main { position:absolute; left:0px; top:0px; height:100%; width:100%; word-wrap: break-word; border: 5px solid yellow; }
#qsp-main { padding-left:12px; padding-right:12px; text-align:justify; border: 5px solid red; margin-top: 50px;}
#blok { position:absolute; left:0px; bottom:0px; border: 1px solid green;}

По идеи, блок с id “blok” должен позиционироваться относительно первого родителя с позиционированием (qsp-wrapper-main), но он позиционируется относительно блока “qsp-scroller-main”. Так же если я меняю позиционирование “absolute” на “fixed”, то разницы в расположении блока “blok ” нет. Но если я удаляю блок “qsp-scroller-main”, то все прекрасно работает. В общем, я в тупике и не знаю, что делать.

Mxat2008,

блок с id “blok” должен позиционироваться относительно первого родителя с позиционированием (qsp-wrapper-main), но он позиционируется относительно блока “qsp-scroller-main”

Так и есть. Просто позиционирование для скроллеров задаётся не в CSS, а в момент вызова JS-плагина, обслуживающего скроллеры.

если я меняю позиционирование “absolute” на “fixed”, то разницы в расположении блока “blok ” нет

Почитай, чем “absolute” отличается от “fixed”. В двух словах, “absolute” отталкивается от одного из родительских блоков, а “fixed” от границ окна. Важно это понимать при вёрстке.

если я удаляю блок “qsp-scroller-main”, то все прекрасно работает

Скроллеры рассчитаны на такое использование: если тебе нужно, чтобы контент, например в основном описании, скроллился, то оставляешь скроллер. Если нет, то убираешь этот див (оставляя на прежнем месте “внутренности”), и скроллер по-тихому “отключается”.

<!-- прокрутка есть -->
<div id="qsp-wrapper-main">
  <div id="qsp-scroller-main">
   <div id="qsp-main">
   </div>
  </div>
</div>

<!-- прокрутки нет -->
<div id="qsp-wrapper-main">
   <div id="qsp-main">
   </div>
</div>

Если тебе нужно выводить что-то в блоке, существующем отдельно от описания, например таблицу характеристик, самый лучший способ - прописать этот блок статично в вёрстке (html-шаблоне), а заполнять вызовом яваскрипта, типа “skinSetStat(10, 100, 50);”. Вызов помещаешь в процедуру, и в итоге код выглядит примерно так:

HP = HP - 12
GS 'update_stat'

Если это слишком сложно для понимания, можно попроще, выводить блок в окно доп. описания. Но это при условии, что оно ещё не задействовано в игре.

Nex,
Я так понимаю, варианта где бы и скроллинг и позиционирование относительно блока “qsp-wrapper-main” работали бы вместе нету?
А насчет таблицы хар-ик, про блок в html-шаблоне и вызов понятны, а вот вызов js это для меня если не дремучий, то темный и страшный лес точно. Но я сделал такую табличку проще, через модальное окно css.
Может можно сделать так чтобы блок “qsp-scroller-main” был равен блоку “qsp-wrapper-main”?

Где-то месяц назад я применил все свои великие навыки в javascript и получил вот это:

Spoiler
$(window).resize(function(){
 main = document.getElementById('qsp-wrapper-main').scrollHeight; 
 $('#qsp-main').css('min-height', main + 'px');
})

Идея была в том, что бы блок “qsp-main” был равен блоку “qsp-wrapper-main” и соответственно растягивал блок “qsp-scroller-main” и тогда позиционирование шло бы как нужно.
Но возникла проблема, в том, что время от времени в блоке “qsp-main” после описания появляются переносы строк и иногда их весьма много, что портит всю картину.

Никита №1221 #1160 21.11.2014 16:29 (11 years ago)

А есть ли способ контролировать размер окон (основного описания, список предметов) програмно? В моем случае окно дополнительного описания.

Я так понимаю, варианта где бы и скроллинг и позиционирование относительно блока “qsp-wrapper-main” работали бы вместе нету?

Я не понимаю, что тебе нужно. И скроллинг и позиционирование работают. Поясни на примере, чего ты хочешь добиться.

вызов js

! Пример. Меняем сцену, вызывая функцию скина skinSetStage.
$stage = 'cover'
EXEC('JS:skinSetStage("' + $stage + '");')

Может можно сделать так чтобы блок “qsp-scroller-main” был равен блоку “qsp-wrapper-main”?

Что это значит, и зачем это нужно?

время от времени в блоке “qsp-main” после описания появляются переносы строк и иногда их весьма много

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

А есть ли способ контролировать размер окон (основного описания, список предметов) програмно? В моем случае окно дополнительного описания.

Как я понимаю, ты о классическом плеере. Программно контролировать размер окон нельзя. Но можно настроить окна “под себя”, растягивая их мышкой, а потом скопировать в папку с игрой файл с настройками плеера. Если распространять этот файл с игрой, и поставить ему атрибут “только для чтения”, то окна при старте игры будут такого размера, как ты задал.

Никита №1221 #1160 22.11.2014 08:48 (11 years ago)

Nex:

Но можно настроить окна “под себя”, растягивая их мышкой, а потом скопировать в папку с игрой файл с настройками плеера. Если распространять этот файл с игрой, и поставить ему атрибут “только для чтения”, то окна при старте игры будут такого размера, как ты задал.

Возможно глупый вопрос, а какой это файл? И что за атрибут только для чтения?

Log in or Register to post comments.