Как сделать?
…
Нужен хелп, ребятки, ибо привыкла я к хорошему, а как на куспе так сделать что-то не пойму.
У меня есть объект нож в виде массива.
$knife[’name’] = ‘Нож’
$knife[’desc’] = ‘Описалово’
…
И есть инвентарь, в который добавляются предметы:
$inv[] = $knife
И вот как бы мне сделать вывод через переменную инвентаря.
К примеру, $inv[0] = $knife
И надо как-то так:
‘<<$inv0>>’
‘<<$inv0>>’
ну что ес-но не работает.
А как-то можно вообще это сделать?
Вета,
Ух, сам над этим голову ломал.
!//--- Инициализируем где-то массив с предметами
$item['Нож, Имя'] = 'Нож'
$item['Нож, Описание'] = 'Стальной, отливающий блеском, нож. Пригодится, если нужно освежевать... кого-то.'
!//--- Там, где подбираем предмет
$inventoryName[1] = $item['Нож, Имя']
$inventoryDesc[1] = $item['Нож, Описание']
!//--- Там, где выводим
index = 1
:printItems
*PL '<<$inventoryName[index]>>'
*P '<<$inventoryDesc[index]>>'
index += 1
if (arrsize('$inventoryName')-1)>index: jump 'printItems'
Минус в том, что каждый предмет придется руками добавлять. Если их в принципе не много и игра линейна, то это не принципиально. Если их больше, то нужен иной подход.
Oliver, спасибо, Такой вариант я знаю, но неужели нет более изящного способа, чем добавлять руками все свойства? Предметов может и немного, а вот свойств не два… ну, может, кто-то ещё сталкивался и подскажет.
Вета,
ты наверное опечаталась. В инвентарь нож должен прописываться так:
$inv[0] = '$knife'
Тогда вывод:
dynamic "<<$inv[0]>>['name']"
dynamic "<<$inv[0]>>['desc']"
P.S.: а я всем рекламирую систему типа:
Spoiler
Aleks Versus, ты мой герой! =) Ты меня спас, спасибо тебе огромное )
Aleks Versus:
Вета,
ты наверное опечаталась. В инвентарь нож должен прописываться так:$inv[0] = '$knife'Тогда вывод:
dynamic "<<$inv[0]>>['name']" dynamic "<<$inv[0]>>['desc']"P.S.: а я всем рекламирую систему типа:
Spoiler
Собственно нужно как-то уменьшить кол-во кода на локации “Улица”
Какие ваши советы?
Кусок кода:
IF Что>0:
IF INSTR($МАМА['GEO'], 'Лока') AND INSTR($ПАПА['GEO'], 'Лока') AND INSTR($СЕСТРА['GEO'], 'Лока') AND INSTR($БРАТ['GEO'], 'Лока'):
GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>', $ico['мама'], $ico['папа'], $ico['сестра'], $ico['брат']
ELSEIF INSTR($МАМА['GEO'], 'Лока') AND INSTR($ПАПА['GEO'], 'Лока') AND INSTR($СЕСТРА['GEO'], 'Лока'):
GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>', $ico['мама'], $ico['папа'], $ico['сестра']
ELSEIF INSTR($МАМА['GEO'], 'Лока') AND INSTR($ПАПА['GEO'], 'Лока') AND INSTR($БРАТ['GEO'], 'Лока'):
GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>', $ico['мама'], $ico['папа'], $ico['брат']
ELSE
MSG('Ну всё, приехали')
GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом (неоплачено)</font>'
END
Прилагаю игру > igra.qsp
jeesson,
NUMBER=0
IF INSTR($МАМА['GEO'], 'Лока'): NUMBER+=1
if INSTR($ПАПА['GEO'], 'Лока'): NUMBER+=2
if INSTR($СЕСТРА['GEO'], 'Лока'): NUMBER+=4
if INSTR($БРАТ['GEO'], 'Лока'): NUMBER+=8
! сумма будет отличаться в зависимости от сочетания условий
if что>0:
! повторяющиеся части вносим в виде текста в переменную
$code={GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>'}
IF NUMBER=15:
dynamic $code+{, $ico['мама'], $ico['папа'], $ico['сестра'], $ico['брат']}
ELSEIF NUMBER=7:
dynamic $code+{, $ico['мама'], $ico['папа'], $ico['сестра']}
ELSEIF NUMBER=11:
dynamic $code+{, $ico['мама'], $ico['папа'], $ico['брат']}
! наверное здесь пропущен END
ELSE
MSG('Ну всё, приехали')
GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом (неоплачено)</font>'
END
О. Глянул игру. Если различие только в передаваемых иконках, то весь код можно представить так:
NUMBER=0
$ICOS=''
IF INSTR($МАМА['GEO'], 'Лока'): NUMBER+=1 & $ICOS+={, $ico['мама']}
if INSTR($ПАПА['GEO'], 'Лока'): NUMBER+=2 & $ICOS+={, $ico['папа']}
if INSTR($СЕСТРА['GEO'], 'Лока'): NUMBER+=4 & $ICOS+={, $ico['сестра']}
if INSTR($БРАТ['GEO'], 'Лока'): NUMBER+=8 & $ICOS+={, $ico['брат']}
if что>0:
! повторяющиеся части вносим в виде текста в переменную
$code={GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом</font>'}
IF NUMBER>0:
dynamic $code+$ICOS
ELSE
GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом (пусто)</font>'
end
ELSE
MSG('Ну всё, приехали')
GS 'PROCESS.ACT', $ico['ЗАГЛУШКА'], 'Ссылка на локу', '', '', '<font color="green">Дом (неоплачено)</font>'
END
О, огромное спасибо) Спас от кучи повторений(думал будет безумие), ибо не знал как это реализовать))
act “выйти”:
time +=5
gs ‘calendar’
gt ‘Привокзальная площадь’
end
if деньги >=1500:
act ‘Поесть’:
деньги=деньги -1500
сытость +=100
*pl ‘Было не очень вкусно, но дешево’
gt $CURLOC
elseif деньги <1500:
*pl ‘У меня не достаточно денег’
end
end
при на жатии на поесть пропадает это действие, и не выводится ‘Было не очень вкусно, но дешево’
c кнопкой разобрался. как вывести этот текст на экран
Оптимизирую твой код:
if деньги >=1500:
act ‘Поесть’:
деньги -= 1500
сытость += 100
pl ‘Было не очень вкусно, но дешево’
gt $curloc
else
pl ‘У меня не достаточно денег’
end
end
Проблема в том, что надпись выводится на главное окно описания, но сразу же после этого из-за “gt $CURLOC” локация обновляется, и текст исчезает. Решение: напиши где-нибудь в начале игры строку “showstat 1”. Тогда появится окно дополнительного описания, в котором эти надписи будут появляться, и никуда не исчезнут кроме как по твоему прямому приказу. И в таком случае не ставь звезду перед “pl”.
Кстати, задавай вопросы не в новой теме, а в теме “Как сделать?”.
Логическая ошибка. Акт появляется, если денег достаточно, при этом проверка на их недостаточность стоит внутри этого акта.
Структура:
если
акт
иначе
конец акта - ошибка, акт заканчивается после “иначе”, следовательно не видим в блоке акта сверху
конец если
Engineer:
Логическая ошибка. Акт появляется, если денег достаточно, при этом проверка на их недостаточность стоит внутри этого акта.
Структура:
если
акт
иначе
конец акта - ошибка, акт заканчивается после “иначе”, следовательно не видим в блоке акта сверху
конец если
Хах. Я пытался помочь, но сделал ту-же ошибку.
только не смейтесь, хотя можете и смеяться. но как сделать начальные статы для гг и что бы они при каких-то действиях повышались. в этом вопросе вообще ничего не понимаю.
В первой локации напиши переменные. К примеру:
сила=5
восприятие=7
выносливость=2
харизма=6
интеллект=5
ловкость=8
удача=3
и так далее.
Характеристики указывать можешь любые. А дальше можешь просто менять переменные. Всё