Как сделать?
…
Говорю же, АРГС отвечает за то, с кем ты общаешься. Имя оппонента
Помогите, пожалуйста.
По ходу игры игрок взаимодействует только с одним предметом - венком. Постепенно я в него с помощью массивов добавляю цветы. Но, когда я сразу после добавления цветка жму на венок, цветок там не появляется, только когда жму второй раз. Никак нельзя это исправить? Вот пример кода:
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,
о, все, поняла, спасибо, сейчас переделаю :)
А как сделать проценты в игре? Допустим 25 из 100 56 из 100 и так далее?
Одиночка, тебе нужен просто счетчик здоровья? Если да, то он делается через подстановку переменных таким образом:
'<<здоровье>>'
. Когда мы заключаем переменную в треугольные скобки, то мы выводим её значение непосредственно в тексте. Допустим:
здоровье=60
'Ваше здоровье <<здоровье>>/100'
!На экран выведется надпись 'Ваше здоровье 60/100'
А единицу измерения ты задаешь сам в тексте, какая тебе нравиться. В программном коде это всё-равно будет число.
Советую сделать хотя бы этот урок http://qsp.su/index.php?option=com_content&view=article&id=95&Itemid=56
Нет, я хочу чтобы был шанс на срабатывание чего либо, вроде 25 - умрешь, 75 - выживешь, 100 - максимально. Просто рандом постоянно прокручивать достало.