Как сделать?
…
$m='$л1_0'
set $q[11]='<<$m>>'+'<<n-2>>'+'_0'+'<<m-2>>'
set $q[12]='<<$m>>'+'<<n-2>>'+'_0'+'<<m-1>>'
set $q[13]='<<$m>>'+'<<n-2>>'+'_0'+'<<m>>'
set $q[14]='<<$m>>'+'<<n-2>>'+'_0'+'<<m+1>>'
set $q[15]='<<$m>>'+'<<n-2>>'+'_0'+'<<m+2>>'
set $q[21]='<<$m>>'+'<<n-1>>'+'_0'+'<<m-2>>'
set $q[22]='<<$m>>'+'<<n-1>>'+'_0'+'<<m-1>>'
set $q[23]='<<$m>>'+'<<n-1>>'+'_0'+'<<m>>'
set $q[24]='<<$m>>'+'<<n-1>>'+'_0'+'<<m+1>>'
set $q[25]='<<$m>>'+'<<n-1>>'+'_0'+'<<m+2>>'
set $q[31]='<<$m>>'+'<<n>>'+'_0'+'<<m-2>>'
set $q[32]='<<$m>>'+'<<n>>'+'_0'+'<<m-1>>'
set $q[33]='<<$m>>'+'<<n>>'+'_0'+'<<m>>'
set $q[34]='<<$m>>'+'<<n>>'+'_0'+'<<m+1>>'
set $q[35]='<<$m>>'+'<<n>>'+'_0'+'<<m+2>>'
set $q[41]='<<$m>>'+'<<n+1>>'+'_0'+'<<m-2>>'
set $q[42]='<<$m>>'+'<<n+1>>'+'_0'+'<<m-1>>'
set $q[43]='<<$m>>'+'<<n+1>>'+'_0'+'<<m>>'
set $q[44]='<<$m>>'+'<<n+1>>'+'_0'+'<<m+1>>'
set $q[45]='<<$m>>'+'<<n+1>>'+'_0'+'<<m+2>>'
set $q[51]='<<$m>>'+'<<n+2>>'+'_0'+'<<m-2>>'
set $q[52]='<<$m>>'+'<<n+2>>'+'_0'+'<<m-1>>'
set $q[53]='<<$m>>'+'<<n+2>>'+'_0'+'<<m>>'
set $q[54]='<<$m>>'+'<<n+2>>'+'_0'+'<<m+1>>'
set $q[55]='<<$m>>'+'<<n+2>>'+'_0'+'<<m+2>>'
*p '<<$q[11]>> <<$q[12]>> <<$q[13]>> <<$q[14]>> <<$q[15]>>
'
*p'<<$q[21]>> <<$q[22]>> <<$q[23]>> <<$q[24]>> <<$q[25]>>
'
*p'<<$q[31]>> <<$q[32]>> <<$q[33]>> <<$q[34]>> <<$q[35]>>
'
*p'<<$q[41]>> <<$q[42]>> <<$q[43]>> <<$q[44]>> <<$q[45]>>
'
*p'<<$q[51]>> <<$q[52]>> <<$q[53]>> <<$q[54]>> <<$q[55]>>
В ответ выдает матрицу:
$л1_01_01 $л1_01_02 $л1_01_03 $л1_01_04 $л1_01_05
$л1_02_01 $л1_02_02 $л1_02_03 $л1_02_04 $л1_02_05
$л1_03_01 $л1_03_02 $л1_03_03 $л1_03_04 $л1_03_05
$л1_04_01 $л1_04_02 $л1_04_03 $л1_04_04 $л1_04_05
$л1_05_01 $л1_05_02 $л1_05_03 $л1_05_04 $л1_05_05
Вопрос: как сделать так, чтобы вместо $л1_01_01 можно было вставить значение постоянной $л1_01_01?)
$m='$л1_0'
set $q[11]='<<$m>>'+'<<n-2>>'+'_0'+'<<m-2>>'
set $q[12]='<<$m>>'+'<<n-2>>'+'_0'+'<<m-1>>'
set $q[13]='<<$m>>'+'<<n-2>>'+'_0'+'<<m>>'
set $q[14]='<<$m>>'+'<<n-2>>'+'_0'+'<<m+1>>'
set $q[15]='<<$m>>'+'<<n-2>>'+'_0'+'<<m+2>>'
set $q[21]='<<$m>>'+'<<n-1>>'+'_0'+'<<m-2>>'
set $q[22]='<<$m>>'+'<<n-1>>'+'_0'+'<<m-1>>'
set $q[23]='<<$m>>'+'<<n-1>>'+'_0'+'<<m>>'
set $q[24]='<<$m>>'+'<<n-1>>'+'_0'+'<<m+1>>'
set $q[25]='<<$m>>'+'<<n-1>>'+'_0'+'<<m+2>>'
set $q[31]='<<$m>>'+'<<n>>'+'_0'+'<<m-2>>'
set $q[32]='<<$m>>'+'<<n>>'+'_0'+'<<m-1>>'
set $q[33]='<<$m>>'+'<<n>>'+'_0'+'<<m>>'
set $q[34]='<<$m>>'+'<<n>>'+'_0'+'<<m+1>>'
set $q[35]='<<$m>>'+'<<n>>'+'_0'+'<<m+2>>'
set $q[41]='<<$m>>'+'<<n+1>>'+'_0'+'<<m-2>>'
set $q[42]='<<$m>>'+'<<n+1>>'+'_0'+'<<m-1>>'
set $q[43]='<<$m>>'+'<<n+1>>'+'_0'+'<<m>>'
set $q[44]='<<$m>>'+'<<n+1>>'+'_0'+'<<m+1>>'
set $q[45]='<<$m>>'+'<<n+1>>'+'_0'+'<<m+2>>'
set $q[51]='<<$m>>'+'<<n+2>>'+'_0'+'<<m-2>>'
set $q[52]='<<$m>>'+'<<n+2>>'+'_0'+'<<m-1>>'
set $q[53]='<<$m>>'+'<<n+2>>'+'_0'+'<<m>>'
set $q[54]='<<$m>>'+'<<n+2>>'+'_0'+'<<m+1>>'
set $q[55]='<<$m>>'+'<<n+2>>'+'_0'+'<<m+2>>'
*p '<<$q[11]>> <<$q[12]>> <<$q[13]>> <<$q[14]>> <<$q[15]>>
'
*p'<<$q[21]>> <<$q[22]>> <<$q[23]>> <<$q[24]>> <<$q[25]>>
'
*p'<<$q[31]>> <<$q[32]>> <<$q[33]>> <<$q[34]>> <<$q[35]>>
'
*p'<<$q[41]>> <<$q[42]>> <<$q[43]>> <<$q[44]>> <<$q[45]>>
'
*p'<<$q[51]>> <<$q[52]>> <<$q[53]>> <<$q[54]>> <<$q[55]>>
В ответ выдает матрицу:
$л1_01_01 $л1_01_02 $л1_01_03 $л1_01_04 $л1_01_05
$л1_02_01 $л1_02_02 $л1_02_03 $л1_02_04 $л1_02_05
$л1_03_01 $л1_03_02 $л1_03_03 $л1_03_04 $л1_03_05
$л1_04_01 $л1_04_02 $л1_04_03 $л1_04_04 $л1_04_05
$л1_05_01 $л1_05_02 $л1_05_03 $л1_05_04 $л1_05_05
Вопрос: как сделать так, чтобы вместо $л1_01_01 можно было вставить значение постоянной $л1_01_01?)
П.с. Подобная конструкция:
$f='<'
$ff='>'
$c='<<$f>>'+'<<$f>>'+'<<$mid($q[11],1,9)>>'+'<<$ff>>'+'<<$ff>>'
$л1_01_01='ы'
*p'<<$c>>'
выдает:
>
для этого существует оператор DYNAMIC (http://qsp.su/tools/onlinehelp/opsfuncs_ops_base.htm#op_dynamic)
то есть чтобы вместо матрицы переменных получить матрицу их значений нужно сделать так
DYNAMIC "
*p <<$q[11]>> +' '+ <<$q[12]>> +' '+<<$q[13]>> +' '+<<$q[14]>> +' '+<<$q[15]>>
"
ну и так далее для всех строк
обрати внимание что если ты внутри внутри оператора DYNAMIC хочешь получить значение переменной, чье имя хранится в другой переменной то кавычки не нужны
то есть
DYNAMIC "
*p <<$q[11]>>
"
выведет значение переменной, которая хранится в $q[11], а
DYNAMIC "
*p '<<$q[11]>>'
"
выведет название переменной, которая хранится в $q[11]
Можно так:
$res='$result=$args'
*p '<<dyneval($res,$q[11])>> <<dyneval($res,$q[12])>>'
*p '<<dyneval($res,$q[21])>> <<dyneval($res,$q[22])>>'
Вообще говоря, думаю, что можно упростить этот подход. Например, задавать имена/значения переменных сразу в массиве:
$q['<<x>>_<<y>>']='значение'
Выводить как *p “Значение: <<$q[’1_1’]>>”
Убейте меня. я почти ничего не понял хД
Лан… ща разберемся методом научного тыка)
п.с. Byte, очень прошу. В следующий раз дай объяснения по каждой букве…
п.с.2. Первый метод предложенный Byte не пропахал, либо я не разобрался как именно его вставлять. Второй метод мне кажись не подходит… по крайней мере я пока не догоняю как ее юзать)
Народ, как сделать, чтобы при использовании предмета переходило на другую локации с возможностью возвращения на предыдущую без потери данных(событий, произошедших на локации на которой был использован предмет), но при этом на локации вызванной предметом можно было так же производить действия и они не терялись?
может это:
GOSUB [$выражение],[параметр 1],[параметр 2], ... или GS [$выражение],[параметр 1],[параметр 2], ... - обработка локации с названием [$выражение]. Базовое описание локации добавляется к текущему описанию, базовые действия добавляются к текущим действиям, и происходит выполнение операторов в поле "Выполнить при посещении", затем возврат на исходную строку (продолжение выполнения программы).
Или я неправильно понял суть вопроса?
=NOSgod=,
Можно хранить список предметов и действия в массивах, добавляя их при переходе на локацию.
Тогда будет не жалко удалить все предметы и все действия, потому что легко можно будет восстановить.
Ntropy:
Можно хранить список предметов и действия в массивах
А как это делать? Вероятно имеется в виду функция аррпос, но я вообще не вкурил, как она пашет и как её можно применить в моём случае. Хочу сдклать что-то типо ПДА в игре с картой, списком квэстов, блэкджеком и шлюхами.
И ещё вопрос: у меня в окне дополнительного описания находятся некие постоянные данные - статус(часики тикают, здоровье тратится, опыт набирается и пр). Как сделать чтобы после этих данных могли добавляться новые строки, не мешая статусу?
=NOSgod=,
тебе необходимо изучить работу с переменными и массивами.
И я не имею в виду справку QSP; переменные и массивы - это общие понятия для большинства языков программирования. Принцип везде одинаковый.
А ка сделать не подскажете? У меня просто голова уже пухнет от попыток разобраться во всём этом. ЧТо такое переменные и массивы я представляю, но как они работают здесь( ну про переменные я понял) - вот в чём вопрос.
=NOSgod=,
В разделе “Разработчикам” есть пример “QSP old demos [3.0.0]” там, как я помню, совершенно простейшие примеры, просто кусочки кода, в том числе и по работе с массивами.
Локация-стол. При нажатии на нее игрок может взять 2 предмета, 1 предмет или ничего не брать.
Если игрок берет оба предмета, при дальнейшем переходе на эту локацию - должно быть только действие отойти. Если игрок взял только 1 предмет, по возвращении на локацию должен остаться только тот предмет, что не взял.
Но у меня получается, что когда он возвращается на локацию, то можно взять опять оба предмета, даже если у него уже есть один. Где я не права, подскажите, пожалуйста.
*clr
‘На небольшом столике аккуратно сложены предметы’
if ar1=0 :
ACT ‘Взять предмет1’:
delact $selact
ar1=1
addobj ‘предмет1’
end
end
if ar2=0:
ACT ‘Взять предмет2’:
delact $selact
ar2=1
addobj ‘предмет2’
end
end
ACT ‘Отойти от столика.’:
GT ‘Комната_гг’
end
Кажись, я разобралась =)
С переменными разобрался. Новый вопрос - как для каждого предмета сделать своё уникальное меню? Например я хочу, чтобы у оружия было одно меню, у аптечек другое, а у квэстовых предметов - третье. Покамесь получается назначить только одно меню для всех предметов.