Как ограничить размер рюкзака?
Чтобы можно было нести, например, только 10 предметов?
Ivan27_XL,
Делал первый раз.
Купив 10 мечей они добавляются в инвентарь, а если попробовать купить ещё 1 меч, то выдаёт сообщение, что “В сумке не достаточно ячеек”
!В начальной локации пишешь:
атака = 0
деньги = 1000
сумка = 10
$ONNEWLOK = ''
$ONOBJSEL = ''
!В локации где допустим покупаешь предмет:
ACT 'Купить деревянный шит 15 монет.':
IF сумка >=1:
IF деньги >=15:
деньги = деньги - 15
сумка=сумка - 1
PL 'Вы купили щит за 15 монет'
ADDOBJ 'Щит'
Щит = Щит + 1
IF selobj = 'Щит':
$Щит[0] = 'Одеть:5'
menu '$Щит'
unsel
END
END
ELSE
PL 'У вас не хватает ячеек в сумке.'
END
END
END
!А если выкидываешь предмет, то:
CLR
IF сумка :
сумка = сумка + 1
PL 'Вы выкинули щит!'
DELOBJ 'Щит'
END
Только тут я обнаружил ошибку! При наборе всех 10 предметов не выкидывает из инвентаря предмет, а если менее 10 предметов то выкинуть можно.
И изначально не показывает сколько у меня денег, атаку и сумку на 10 ячеек.
Более опытные посмотрите пожалуйста где совершена ошибка. Заранее спасибо.
Вообще-то есть обработчики добавления и удаления предметов. Их и следует использовать.
$ONOBJADD
$ONOBJDEL
Спасибо всем за помощь! Это было для меня очень важно.
А вот нельзя ли создать переменную, отображающую количество предметов в рюкзаке (не количество, например, патронов, а вообще сколько строчек с названиями предметов)?
Ivan27_XL,
такая переменная есть.
COUNTOBJ
Читай справку внимательнее.
Nickit:
Более опытные посмотрите пожалуйста где совершена ошибка.
Я сам неопытный, но помочь попробую.
1. В локации 1 вместо $ONNEWLOK нужно писать $ONNEWLOC.
2. В локациях 2, 3, 5 и 7 лишний последний END.
3. Из локации 3 следует удалить построение меню для выделенного предмета ‘Щит’ (строки, дублируемые в локации 4).
4. Числовая переменная Щит нигде не используется. Следовательно, она не нужна.
5. Небольшое недоумение: используем щиты, но увеличивается не защита, а атака. Причём увеличивать (если надеть щит) или уменьшать (если снять щит) атаку можно сколько угодно. И ещё, разумеется, если одели щит, то его уже не должно быть в сумке.
6. В локации 6 условие вообще не нужно.
Выкладываю исправленный файл sumka_na_10_yacheek_1.qsp.
А вообще-то, ответ на вопрос «Как ограничить размер рюкзака?» находится в справке, в разделе «Часто задаваемые вопросы (”FAQ”)».
Спасибо, не заметил
Вот, ещё один момент, как сделать что бы можно было бы взять в руки только один щит?
Nickit,
ты даёшь очень абстрактные задачи. Сделать можно миллионом разных способов. Первое, что приходит на ум:
act 'взять щит в руки':
if щит_в_руках = 1:
*pl 'У тебя в руках уже есть щит'
else
*pl 'Ты взял щит в руки'
щит_в_руках=1
end
end
Aleks Versus,
А можешь написать по коду сумки? которая в этой теме.
Вот вроде к этому добавить
CLR
атака += 6
PL 'Вы одели Деревянный Щит'
сумка += 1
delobj 'Щит'
addobj 'Щит (одет)'
Хотя есть пример с рубинами, можно глянуть.