RU

Как ограничить размер рюкзака?

Ivan27_XL #1236 30.01.2015 20:41 19 comments 9952 views

Чтобы можно было нести, например, только 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

Спасибо всем за помощь! Это было для меня очень важно.

А вот нельзя ли создать переменную, отображающую количество предметов в рюкзаке (не количество, например, патронов, а вообще сколько строчек с названиями предметов)?

Aleks Versus Moderator 31.01.2015 08:48 (11 years ago)

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”)».

Спасибо, не заметил

Вот, ещё один момент, как сделать что бы можно было бы взять в руки только один щит?

Aleks Versus Moderator 12.02.2015 09:45 (11 years ago)

Nickit,
ты даёшь очень абстрактные задачи. Сделать можно миллионом разных способов. Первое, что приходит на ум:

act 'взять щит в руки':
     if щит_в_руках = 1:
         *pl 'У тебя в руках уже есть щит'
     else
         *pl 'Ты взял щит в руки'
         щит_в_руках=1
     end
end

Aleks Versus,
А можешь написать по коду сумки? которая в этой теме.

Вот вроде к этому добавить

CLR
атака += 6
PL 'Вы одели Деревянный Щит'
сумка += 1
delobj 'Щит'
addobj 'Щит (одет)'

Хотя есть пример с рубинами, можно глянуть.

Log in or Register to post comments.