RU 📌 Pinned

Как сделать?

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

Nex:

Oliver,
если действие “Спать” должно прибавлять энергию, то и напиши:

energy = energy + 100

в действии “Спать”.

Это сначала такое количество енергии, у меня ошибка в другом, что-то обнуляет все переменные.

Oliver,
выложи весь код целиком, а то вообще непонятно, чего ты хочешь.

Никакого обнуления в приведённом коде нет. Скорее всего, ты где-то опечатался.

Nex,
Спасибо, но я действительно опечатался.

Мне нужна помощь в виде реализации времени(пока только дни). $ONNEWLOC я не пользовался, вот и хочу научится.

тема хоть и не совсем для этого подходит, но спрошу
почему во всех играх что мне попадались на глаза переменные пишут на английском? в чем смысл?

Oliver,
Игровое время

saks,
я думаю, по большей части потому, что в других популярных языках программирования это стандарт. Только в QSP можно использовать переменные на русском языке. Поэтому, просто по привычке.

Spoiler

act’Сдалать бочку’:
cla
*clr
‘<center><img src=“pic/дрова/2.jpg”></center>’
if доски >=6 and обруч>=2 :
бочка=бочка+1
“вы сделали бочку”
else :
if доски <6 : “вам нехватает <<6-доски>>досок”
end
if обруч<2 : “вам нехватает <<2-обруч>>обручей”
end
end
act’Закончить’:gt curloc
end
end

никак немогу понять что ему не нравится. выдает ошибку
должно быть так если всего хватает то делается бочка, если чегото нехватает высвечивается сообщение
з.ы. спасибо все заработало

saks,
Я пока заметил пробели перед двоеточием, после ELSE двоеточие ставить не нужно. Да и структура не много кривая, но я исправить не смог, подожди профессионалов, или тех кто сможет помочь.

saks,
Слово end используется только для многострочных форм операторов if и act. Нужно следить, какой end какому if либо act соответствует. В твоём случае слишком много ненужных end’ов. Вместо

if  доски <6 : "вам нехватает <<6-доски>>досок" 
 end 
if обруч<2 : "вам нехватает <<2-обруч>>обручей" 
 end

нужно написать

if доски < 6: "вам не хватает <<6-доски>> досок"
if обруч < 2: "вам не хватает <<2-обруч>> обручей"

В конечном итоге твой пример может выглядеть следующим образом:

act 'Сделать бочку': 
	cla 
	*clr 
	'<center><img src="pic/дрова/2.jpg"></center>' 
	if доски >= 6 and обруч >= 2:
		бочка = бочка + 1
		"вы сделали бочку" 
	else
		if доски < 6: "вам не хватает <<6-доски>> досок"
		if обруч < 2: "вам не хватает <<2-обруч>> обручей"
	end
	act 'Закончить': gt curloc
end

saks,
тебе верно написал snail, про путаницу однострочной формы и многострочной (лишние “end”).

От себя добавлю, что это очень распространённая ошибка начинающих авторов. Разобрана в теме “Грабли”.

Такой вопрос: как подсчитать количество предметов с определенным названием в рюкзаке? К примеру, если нужно узнать, сколько у персонажа в рюкзаке предметов с названием “Череп” или “Хвост крысы” и т.д.

Aleks Versus Moderator 05.04.2015 07:32 (10 years ago)

Hungry,
есть функция, которая возвращает текущее число предметов - countobj. Есть функция, возвращающая название предмета по номеру - getobj(). Всё это описано в справке. Задача решается маленьким циклом.

i=1
:for
if i<=countobj:
    if getobj(i)='Череп':
       skull_count = skull_count + 1
    end
    i=i+1
    jump 'for'
end

Да, действительно. Спасибо.

Не могли бы вы подсказать?
Очень странное поведение программы.
Когда я инициализирую строковую переменную в самой локации, все работает.
А когда я эту же инициализацию вынесла в отдельную процедуру, которую вызываю в текущей локации, получаю пустую строку.
То есть, так работает:
Location 1

USEHTML = 1
'<H2><CENTER>1</CENTER></H2>'
$str1[0] = 'мой текст'
*PL $str1[0]

а так не работает:
Location 1

USEHTML = 1
'<H2><CENTER>1</CENTER></H2>'
GS Var_init
*PL $str1[0]

Var_init

$str1[0] = 'мой текст'

rutigl,
вместо

GS Var_init

нужно написать

GS 'Var_init'

Точно, вот спасибо, Nex!

Log in or Register to post comments.