Насколько надёжно и проверенно QSP работает:
- с массивами (в том числе ассоциативными) больших размеров;
- большим количеством локаций;
- функцией "menu";
- html-тегом <A>…</A> с префиксом "exec:";
- вызовом меню по ссылке?
А также:
- Какова область видимости переменных?
Я возлагаю на эти элементы свои основные надежды.
И ещё — подтип "контекстно-менюшная игра" уже успел кто застолбить? Есть образцы?
Неактивен
Отлично, есть с чем работать!
Неактивен
yandexx написал:
Я конечно никого не хочу обижать, но... Я пробовал портировать кое-что на QSP, и почти сразу отчаялся, потому что язык и общая концепция мне кажутся примитивными. ООП нет в помине. Хотя может для менюшной платформы это нормально. Однако тут есть кому-то, я точно знаю, важные фичи -- HTML, картинки, звук и прочее.
Если бы я писал менюшную игру, то наверное на INSTEAD. Там всё очень удобно и складно.
HzD_Byte написал:
В INSTEAD много чего нет
Язык и общая концепция может и примитивны (как, например, и ассемблер), но даже из этих кирпичиков можно кое-что сложить. Хотя для написания объёмной игры в обычном текстовом редакторе (или даже через QGen) мозги должны щёлкать не хуже чем у персонажа Хоффмана из "Человека дождя". Впрочем, техническую часть лучше обсудить здесь.
Неактивен
Eten написал:
HzD_Byte написал:
Однотипные свойства очень просто реализуются через массивы - был_на_локации[$curloc]=1, $описание['пальто']='Очень теплое пальто.' и т.п.
А что ты делаешь, когда этих инструментов тебе не хватает?
Наверное, то же, что делает человек, когда не знает, как правильно написать определённое слово, — переформулирует фразу, чтобы это слово там не попадалось ("пиши — голова в канаве").
Неактивен
Вопрос: Как корректно передать в функцию №2 параметр функции №1, который может быть как числовым, так и строковым?
В Функцию1 передаётся один параметр, который может быть как числовым, так и строковым. Из Функции1 вызывается Функция2, которая приводит этот параметр к требуемому виду.
Например, во всех массивах данных сведения о предмете хранятся по его числовому ID, однако в некоторых случаях я ссылаюсь на предмет по его строковому идентификатору. Следовательно, есть желание передавать идентификатор (числовой или строковый) предмета одним параметром, а уже внутри функции разбирать — какого типа идентификатор передан и приводить его к унифицированному значению.
#ПолучитьIDПредмета
if ARGS[0]=0 and $ARGS[0]='':
…
elseif ARGS[0]<>0:
Result=ARGS[0]
elseif $ARGS[0]<>'':
Result=IIF(ISNUM($ARGS[0]), VAL($ARGS[0]), МассивIDпоИмени[$ARGS[0]])
end
-
#ПолучитьОписаниеПредмета {Идентификатор предмета}
ID=func('ПолучитьIDПредмета', {Идентификатор предмета})
…
-Неактивен
HzD_Byte написал:
Я вижу 2 варианта:
1) Передавать через строковый параметр (при вызове преобразовывать в строку GS 'функция', STR num) - тогда в функцию аргумент всегда будет приходить как $args[0]
2) Проверять в начале строковое значение - $args[0], если оно не пустое, то использовать его, иначе числовое. Это будет вполне корректно для описанной ситуации с идентификаторами:
iif($args='',args,$args)
Ну за неимением других вариантов, это очевидные способы решения проблемы.
Неактивен
HzD_Byte написал:
Да, это тоже вариант
Народ, все (это гипербола) обходные пути я знаю. Могу подкинуть ещё вариант:
#ПолучитьIDПредмета {Имя глобальной переменной строкой}
COPYARR 'ID', $ARGS[0]
if ID=0 and $ID='':
…
elseif ID<>0:
Result=ID
elseif $ID<>'':
Result=IIF(ISNUM($ID), VAL($ID), МассивIDпоИмени[$ID])
end
-
#ПолучитьОписаниеПредмета {Идентификатор предмета}
rID=ARGS[0]
$rID=$ARGS[0]
ID=func('ПолучитьIDПредмета', 'rID')
…
-Кстати, ещё варианты?
Неактивен
А как html-движок QSP относится к незнакомым тегам и незнакомым атрибутам? Он их тщательно игнорирует или где-то там он ругается, у него крыша едет и на определённом моменте это может боком выйти?
Например:
<Ah object="37" href="exec: GS 'ДействияСЛопатой'">лопата</Ah>
Неактивен