RU 📌 Pinned

Как сделать?

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

Ребята, такой вопрос. В чем разница между вызовами curloc и $curloc? Или переменными result и $result? Проверял оба варианта и все равно curloc возвращает только текстовое значение, а result содержит значение которое в него поместили. Для чего тогда два варианта написания, для совместимости со старыми версиями или просто подсказка для себя какой тип значения там будет.

Aleks Versus Moderator 17.08.2019 19:11 (6 years ago)

Yury8087,
плеер сам преобразует типы данных, когда это возможно. Ты заметишь разницу, только когда плеер не сможет определить тип данных и выведет тебе на экран ошибку. Поэтому следует сразу писать код так, чтобы не путать ни себя ни плеер.
result — для числовых значений
$result — для текстовых значений
$curloc — возвращает текстовое значение, поэтому пишем с символом $
rand — возвращает числовое значение, поэтому пишем без символа $

А для чего тогда есть ucase и $ucase, если на вход всё равно идет строка и на выходе как ни крути будет строка?

есть
View - покажет картинку, оставляя возможность взаимодействовать с интерфейсом
msg - покажет текст или код, таблицу и т д! но запретит взаимодействовать с интерфейсом!

нужно
… - показать текст или код, оствляя возможность взаимодействовать с интерфейсом

Последний из Гаяр Moderator 20.08.2019 14:13 (6 years ago)

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

Aleks Versus Moderator 21.08.2019 10:09 (6 years ago)

Yury8087,
я не особо шарю в таких семантических тонкостях, но
$cos и cos — это по идее два разных массива

cos[0]=1
cos[1]=2
$cos[1]='time'
cos[2]=3
$cos[1]
cos[1]

Однако

arrsize('$cos')
arrsize('cos')

И killvar тоже уничтожит оба массива, какой бы ты ему ни указал. Таким образом символ $ не является частью имени массива, а только лишь указывает на то, какое значение ты хочешь из него получить, и в каждом массиве можно параллельно хранить и текстовые и числовые значения.
Отсюда следует, что имя функции можно указывать так же хоть с $ хоть без $, разницы нет. Если функция возвращает только строку, плеер получит строку. Если функция возвращает только число, плеер получит число.
Однако, если ты наплюёшь на символ $ в записи строковых функций совсем, ты во-первых, сделаешь код менее читаемым, во-вторых однажды столкнёшься с ошибкой, когда плеер не будет знать, какой тип значения тебе нужен. Но тогда он оповестит тебя, что ты неверно указал тип данных. Другое дело, когда плеер автоматически преобразует значение к тому типу, который ему покажется правильным, а тебе нужен будет другой тип, и тогда ошибка будет неявная, и найти её будет в разы сложнее.

Я сам пишу, чего греха таить, и ucase и $ucase. Но, хотя плеер и понимает, чего мы от него хотим, писать следует $ucase, так как это синтаксически грамотно, и поможет выработать привычку к синтаксически верному коду, а значит поможет избежать множества ошибок с типами данных.

Когда начнёшь работать с $func(func) и $dyneval(dyneval), придётся приучить себя правильно указывать тип данных. Особенно с избыточным кодом функций.

Спасибо за ответ.

Как сделать сохранение и загрузку?
ибо как бы я не изощрялся и не вбивал в поиск выдает все что угодно кроме нужной информации!

Aleks Versus Moderator 22.08.2019 09:56 (6 years ago)

Teemo228,

Справка:

Сохранения
OPENGAME [$выражение] - если [$выражение] равно “” (пустая строка) или отсутствует, то вызов окна загрузки состояния игры, иначе загрузка состояния из указанного файла.
См. также $ONGLOAD.
SAVEGAME [$выражение] - если [$выражение] равно “” (пустая строка) или отсутствует, то вызов окна сохранения состояния игры, иначе сохранение состояния в указанный файл.
См. также $ONGSAVE.
NOSAVE - если значение переменной отлично от 0, то сохранение состояния игры пользователем невозможно.
DEBUG - если значение переменной не равно 0, то отключается проверка идентификатора игры при загрузке состояния.
Иначе при каждом изменении файла игры не поддерживаются предыдущие сохранения.

Как сделать, чтоб при нажатии на предмет в инвентаре в доп. окне описаний отображался текст? У меня есть кошелёк, и хочу чтоб при нажатии выводилось “У вас <<деньги>> центов”

Random_Page,

Справка:

В QSP есть возможность сделать так, что бы локация выполнялась каждый раз при возникновении определенного события. Для этого нужно присвоить название локации предназначенной для этого системной переменной.
$ONOBJSEL - при выборе предмета
Получить название выбранного предмета можно через функцию “SELOBJ”.
IF $SELOBJ = ‘чайник’:
P ‘Самый обычный чугунный чайник.’
END

При выборе играющим какого-либо предмета, он остаётся выделенным. Снять выделение можно командой UNSELECT или UNSEL.
IF $SELOBJ = ‘нож’:
*P ‘Нельзя убить этого человека’
END
UNSEL

Здравствуйте! Не получается вывести картинку в основное окно, вернее выводится только одна картинка которую самой первой ставил. На другие локи меняю название картинки в коде и ничего-серый разорванный экран.Использовал этот код :
‘<center><img src=“content/сп р2.jpg”></center>’/
В чем дело? Редактор запомнил только путь самой первой картинки? Настройки? Или в коде надо что то указать? Спасибо!

Aleks Versus Moderator 02.09.2019 10:23 (6 years ago)

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

Вопрос. Как можно разместить текстовый блог в нужном месте основного окна? Какие тэги div работают в qsp? Есть ли специальные команды вёрстки в qsp (Грубо говря, можно ли не трогая таблицы задать высату и ширину для параграфов в процентах/пикселях от экрана? …)

Aleks Versus Moderator 22.09.2019 19:49 (6 years ago)

Red Dragon,
в Quest Navigator и AeroQSP можно, используя CSS.

В классическом плеере вёрстка только через таблицы.

Log in or Register to post comments.