RU 📌 Pinned

Как сделать?

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

Говорю же, АРГС отвечает за то, с кем ты общаешься. Имя оппонента

Помогите, пожалуйста.
По ходу игры игрок взаимодействует только с одним предметом - венком. Постепенно я в него с помощью массивов добавляю цветы. Но, когда я сразу после добавления цветка жму на венок, цветок там не появляется, только когда жму второй раз. Никак нельзя это исправить? Вот пример кода:

if $selobj = 'Венок':
	$fl[0] = 'Шиповник:!цветы_шиповник:content/шиповник.jpg'
	$fl[1] = 'Дуб:!цветы_дуб:content/дуб.jpg'
	menu '$fl'
	unselect
		if фиалка = 1:
			$fl[2] = 'Фиалка:!цветы_фиалка:content/фиалка.jpg'
			menu '$fl'
			unselect
		end
		if солома = 1:
			$fl[3] = 'Солома:!цветы_солома:content/солома.jpg'
			menu '$fl'
			unselect
		end
end

Lisichka

$fl[0] = 'Шиповник:!цветы_шиповник:content/шиповник.jpg'
$fl[1] = 'Дуб:!цветы_дуб:content/дуб.jpg'

Я так понимаю, переменные $fl[0] и $fl[1] заданы уже сразу, поэтому их можно прописать где-нибудь в стартовой локации, с которой начинается игра, или там где меню игры.
А этот код прописать в локации, которая отвечает за выбор предмета:

if фиалка=1:
$fl[2] = 'Фиалка:!цветы_фиалка:content/фиалка.jpg'
end
if солома = 1:
$fl[3] = 'Солома:!цветы_солома:content/солома.jpg'
end
if $selobj = 'Венок': menu '$fl'
unselect

UPD: Можно ещё проще без переменных “фиалка” и “солома”. Просто задавать элемент массива тогда, когда добавляется новый цветок. Код станет ещё проще.

Lisichka,
А можно файл игры на почту? потому что так непонятно что происходит. (ajenta@qsp.su)

И я бы не советовала индексы ставить, лучше так:
$fl[] = ‘Солома:!цветы_солома:content/солома.jpg’
кусп сам расставит, по очереди, а вы не будете путаться каким по счёту добавился цветок.

Storm,
спасибо, попробую сейчас.
А переменная нужна на локации, чтобы определить, сорвал игрок фиалку или еще нет, чтобы изменился текст.

Ajenta,
Письмо отправила.

Lisichka
Это тот вариант без переменных “фиалка” и “солома”, выполненный на двух локациях.

!Стартовая локация
KILLVAR
$ONOBJSEL='Предметы'
addobj "Венок"
ACT'Добавить фиалку': 
DELACT 'Добавить фиалку'
$fl[2] = 'Фиалка:!цветы_фиалка:content/фиалка.jpg'
end
ACT'Добавить солому':
DELACT 'Добавить солому'
$fl[3] = 'Солома:!цветы_солома:content/солома.jpg'
end
$fl[0] = 'Шиповник:!цветы_шиповник:content/шиповник.jpg'
$fl[1] = 'Дуб:!цветы_дуб:content/дуб.jpg'
!Локация "Предметы" в переменной $ONOBJSEL
if $selobj = 'Венок': menu '$fl'
unselect

Немного теории: код воспроизводиться программой по порядку в котором ты его пишешь. В твоём первоначальном коде, когда мы вызывали локацию-обработчик выбора предмета мы вначале вызывали меню, а потом уже присваивали значения элементам массива “fl”. Поэтому меню у нас выводилось не полным при первом нажатии, так как при первом нажатии программе ещё не известны элементы массива $fl[2] и $fl[3].

Storm,
с delact наверное не получится,потому что действия у меня там выполняются через ссылки :)
сейчас попробую этот вариант, потому что предыдущий не сработал - только я выделяла венок, как выделение тут же сбрасывалось, и ничего не происходило)

Storm,
урраааа, я переставила его вниз, и все заработалооо! Спасибо, не знала, что нужно писать в определенном порядке!

Lisichka,
Отправила рабочий код, посмотрите. Это не сильно ломает вашу логику и другие цветы можно делать так же, как фиалку и солому.

Lisichka,
А ещё лучше даже проще заменить код на обжсел на такой

if $selobj = ' ':
   $fl[0] = 'Шиповник:!цветы_шиповник:content/шиповник.jpg'
   $fl[1] = 'Дуб:!цветы_дуб:content/дуб.jpg'
  if фиалка=1 and добавили_фиалку = 0: 
    добавили_фиалку = 1
	$fl[] = 'Фиалка:!цветы_фиалка:content/фиалка.jpg'
  end 
  if солома = 1 and добавили_солому = 0: 
    добавили_солому = 1
	$fl[] = 'Солома:!цветы_солома:content/солома.jpg'
  end
	menu '$fl'
end

unsel

И другие цветы по тому же принципу добавлять, как здесь. В таком варианте не важен порядок добавления.

Ajenta,
Спасибо, уже ответила, посмотрела и разобралась, теперь все работает, как надо! Спасибо еще раз!

Ajenta,
о, все, поняла, спасибо, сейчас переделаю :)

Одиночка #1417 13.05.2015 18:24 (10 years ago)

А как сделать проценты в игре? Допустим 25 из 100 56 из 100 и так далее?

Одиночка, тебе нужен просто счетчик здоровья? Если да, то он делается через подстановку переменных таким образом:

'<<здоровье>>'

. Когда мы заключаем переменную в треугольные скобки, то мы выводим её значение непосредственно в тексте. Допустим:

здоровье=60
'Ваше здоровье <<здоровье>>/100'
!На экран выведется надпись 'Ваше здоровье 60/100'

А единицу измерения ты задаешь сам в тексте, какая тебе нравиться. В программном коде это всё-равно будет число.
Советую сделать хотя бы этот урок http://qsp.su/index.php?option=com_content&view=article&id=95&Itemid=56

Одиночка #1417 13.05.2015 20:20 (10 years ago)

Нет, я хочу чтобы был шанс на срабатывание чего либо, вроде 25 - умрешь, 75 - выживешь, 100 - максимально. Просто рандом постоянно прокручивать достало.

Log in or Register to post comments.