RU 📌 Pinned

Как сделать?

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

Dark[Ol(U23)leneri] #34 13.07.2010 23:24 (15 years ago)
$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?)

Dark[Ol(U23)leneri] #34 13.07.2010 23:30 (15 years ago)
$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’]>>”

Dark[Ol(U23)leneri] #34 14.07.2010 09:12 (15 years ago)

Убейте меня. я почти ничего не понял хД

Лан… ща разберемся методом научного тыка)
п.с. Byte, очень прошу. В следующий раз дай объяснения по каждой букве…
п.с.2. Первый метод предложенный Byte не пропахал, либо я не разобрался как именно его вставлять. Второй метод мне кажись не подходит… по крайней мере я пока не догоняю как ее юзать)

Народ, как сделать, чтобы при использовании предмета переходило на другую локации с возможностью возвращения на предыдущую без потери данных(событий, произошедших на локации на которой был использован предмет), но при этом на локации вызванной предметом можно было так же производить действия и они не терялись?

Dark[Ol(U23)leneri] #34 15.07.2010 12:11 (15 years ago)

может это:

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

Кажись, я разобралась =)

С переменными разобрался. Новый вопрос - как для каждого предмета сделать своё уникальное меню? Например я хочу, чтобы у оружия было одно меню, у аптечек другое, а у квэстовых предметов - третье. Покамесь получается назначить только одно меню для всех предметов.

Log in or Register to post comments.