Как сделать?
…
loony25,
$text=$input('Введи выражение')
act 'Покажи текcт':*pl '<<$text>>'
Как то так …
loony25,
Вот это:
http://qsp.su/index.php?option=com_content&view=article&id=84:qsp-demos-300&catid=36:2009-02-19-06-11-21&Itemid=76
пункт menu и objs, вроде
Большое спасибо, но что касается вопроса о блокноте я так и не разобрался как такое реализовать. :)
oleksandrigo:
Итак еще вопрос. Нужно сделать так чтобы при нажатии акта(даже если этот акт в акте) он в локации битва отображался первым.
Spoiler
Как насчёт акта в акте, не знаю, но есть такой вариант.
Предварительно действия в виде текста заносишь в массив:
$acts_array[0]="act '1':
*nl '1 '
acts_count[0]+=1+max('acts_count')
pl acts_count[0]
gt $curloc
end "
! действие внесено в массив под индексом 0 и счётчик в нём acts_count[0] под индексом 0
На локации, где выводишь действия пишешь такой код:
! получаем наибольшее значение счётчика
memory=arrpos('acts_count',max('acts_count'))
! выводим действие с наибольшим значением счётчика
dynamic $acts_array[memory]
! далее выводим все остальные действия
i=0
:for
if i<arrsize('$acts_array'):
if i<>memory:
dynamic $acts_array[i]
end
i+=1
jump 'for'
end
loony25,
блокнот сделать просто.
Если хочешь в виде предмета в инвентаре, повесь на него два действия (два пункта меню):
Добавить запись
$note[]=input('Что вы хотите записать в блокнот')
Таким образом в новые ячейки массива $note будут вноситься записи
Просмотреть записи:
clr
i=0
:for
if i<arrsize('$note'):
pl $note[i]
i+=1
jump 'for'
end
Aleks Versus,
Что-то не хочет…
сделал так
Spoiler
Тут локация старт
$acts_array[0]="act '1':
*nl '1 '
acts_count[0]+=1+max('acts_count')
pl acts_count[0]
gt $curloc
end "
$acts_array[1]="act '2':
*nl '2 '
acts_count[1]+=1+max('acts_count')
pl acts_count[1]
gt $curloc
end "
$acts_array[2]="act '3':
*nl '3 '
acts_count[2]+=1+max('acts_count')
pl acts_count[2]
gt $curloc
end "
act 'gt1': gt 1
А тут я в локации в которой битва
! получаем наибольшее значение счётчика
memory=max('acts_count')
! выводим действие с наибольшим значением счётчика
dynamic $acts_array[memory]
! далее выводим все остальные действия
i=0
:for
if i < arrsize('$acts_array'):
if i <> memory:
dynamic $acts_array[i]
end
i += 1
jump 'for'
end
И получается что первый раз акты меняются а потом нет.
oleksandrigo,
эм. Да. Я накосячил. Функция max получает не индекс, а максимальное значение. Чтобы найти индекс, нужно после строки
memory=max('acts_count')
добавить строку
memory=arrpos('acts_count',memory)
или поправить строку так:
memory=arrpos('acts_count',max('acts_count'))
Aleks Versus,
Вот теперь работает! Спасибо
Но я еще в каждый акт добавил его “обнулятор”, а то числа потом вообще в минус уходят.
Итак вопрос: Зачем нужно поле ввода в плеере?
Я изначально думал, что это для ввода команд типа gt ‘туда’ или изменение переменных в игре, но нет.
oleksandrigo,
для парсерных игр можно.
Вопрос всем? Как вывести на экран данные двумерного массива типа:
in=0
i=0
set vtype['<<i>>_<<in>>']=2
Тому как, если написать:
pl '<<vtype[0_0]>>'
pl '<<vtype[0_1]>>'
etc.
То кусп выдаёт “ошибка синтаксиса” и данные в массиве нормально не считаются.
даже если писать так
$id=str(i)
$in=str(ind)
set vtype[$id+'_'+$in]=2
Вопрос: что делать?
Последний из Гаяр,
хмм у тебя как-то запутано.
Spoiler
p1_M = 6
p2_M = 6
P1 = 0
:pzm1
p2 = 0
:pzm2
$twoMMas[p1 * p2_m + p2] = '[<<p1>>,<<p2>>]'
p2 += 1
if p2 < p2_M: jump 'pzm2'
p1 += 1
if p1 < p1_M: jump 'pzm1'
p1 = 0
:pvm1
*nl
p2 = 0
:pvm2
*p $twoMMas[p1 * p2_m + p2] + ' '
p2 += 1
if p2 < p2_M: jump 'pvm2'
p1 += 1
if p1 < p1_M: jump 'pvm1'
*nl
n = arrsize ('$twoMMas')
n
$twoMMas[i]
*p '<<i>>'
act 's':
if i < n - 1:
i += 1
gt $curloc
else
i = 0
gt $curloc
end
end
Кинь себе и посмотри в работе его. Кинь весь с актом в конце будет понятнее.
oleksandrigo,
Тут задаются последователньные значения от 0 до 6.
$twoMMas[p1 * p2_m + p2] = '[<<p1>>,<<p2>>]'
плюс мне надо чтоб массиву с двухчислным индексом задать одно значение, а не два в квадратных скобках как указанно в примере выше.
set vtype['<<i>>_<<in>>']=2
Всё ещё жду ответа.
Последний из Гаяр:
pl ‘<<vtype[0_0]>>’
pl ‘<<vtype[0_1]>>’
Если тебе действительно необходимо использовать подвыражения в строке, тогда пользуйся разными кавычками:
pl '<<vtype["0_0"]>>'
pl '<<vtype["0_1"]>>'
Или наоборот:
pl "<<vtype['0_0']>>"
pl "<<vtype['0_1']>>"
Aleks Versus,
Спасибо! Это работает! А то я уже совсем заколебался, думал это я такой косячу.
Задам достаточно странный вопрос:
set x = 1
let x = 1
x = 1
Может между ними есть хоть какая-то разница?
Ибо я никакой не заметил
И еще вопрос:
Насчет оператора IIF
iif (prprpr > 0, gs '1', prprpr = 1)
Этот код не работает. Как я понял он не может выполнять действия? gs, gt …