RU 📌 Pinned

Как сделать?

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

Гуру, скажите что в коде не так?)))) В случае 1 и 4 положительных ответов слетает дальнейший диалог…Наверняка что-то элементарное - но уже взгляд замылился - в упор не вижу где глюк :(

dialog.qsp

Так вот что получилось. Не до конца еще понимаю механику qsp. Вот что получилось с выделением предмета:

Spoiler

$SelectColor = ‘#98FB98’
$DefaultColor = ‘<<$TableTextColor>>’

dynamic $shop

$Shop = \

Если оставить просто $Shop =  Получается пустой экран. Если добавить dynamic $shop в начале то ничего не меняется. Что я сделал не так? По идее плеер должен видеть команду dynamic $shop и выполнить ее, а уже при клике на таблицу срабатывает Select 1 и обновление таблицы. Но что то не хочет работать.

Aleks Versus Moderator 06.07.2016 17:34 (9 years ago)

lamerUA,
очевидно, где-то неправильно закрыто условие, несмотря на то, что на первый взгляд кажется, будто все условия и действия закрыты правильно. Разобраться в этом нагромождении стороннему человеку будет ой как непросто. Рекомендую нарисовать диалог в виде схемы и заново проставить преформатирование, а ещё лучше прокоментировать каждый act if и end:

! открываем первый вопрос
act 'Сэр!, Могу я задать вам пару вопросов?':
     delact 'Сэр!, Могу я задать вам пару вопросов?'
     допрос=1
     !....
! закрываем первый вопрос
end

Bup0H,
dynamic $shop должен стоять после присвоения значения переменной $shop. Вывод таблицы на экран делай с помощью оператора *p. То есть не

'<center><table >' 
             '<tr>' 
                     '<td>'

, а:

*p '<center><table >' 
             *p '<tr>' 
                     *p '<td>'

Перед тем, как нарисовать таблицу, нужно стереть её предыдущий вариант, т.е. в $shop =  первой строкой должна идти команда *clr.
При этом одноразовое изменение цвета у меня лично работает. Цвет меняется на салатовый.

Слово “<купить>” напиши так:

&lt;купить&gt;

Старайся не использовать тег <center> внутри таблицы. Для центрирования можно использовать атрибут align:

<td align=center>...</td>

Здравствуйте. Теперь такой вопрос. Как сделать будильник в игре? Как-то не могу сообразить…

Начал форматировать - врубился…как раз в 1 и 4 вопросе внутренние циклы незакрыты ENDом)))))) Так что реально ларчик просто открывался, просто структура сложноватая получилась. :rolleyes:

А глупый вопрос - можно ли в QSP делать условие удаления строки или текста?

пример:

‘У подъезда валяется чей-то ножик’
Act ‘Взять чью то финку’:
пушка01=3
delAct ‘Взять чью то финку’
end

Действие убивается, но можно ли убить и строку - или обязательна заморочка через объект, картинку итд?

Как простой вариант привязываешь описание через условие и все. Примерно так:

if пушка01=3:
‘У подъезда сидят бабки’
else
‘У подъезда валяется чей-то ножик’
end
Act ‘Взять чью то финку’:
пушка01=3
delAct ‘Взять чью то финку’
end

Без ошибок

if пушка01=3: 
    'У подъезда сидят бабки' 
else 
    'У подъезда валяется чей-то ножик' 
    Act 'Взять чью то финку': 
        пушка01=3 
        delAct 'Взять чью то финку' 
    end
end

Подскажите, почему некоторые гифки проигрываются нормально, а у некоторых искажаются либо цвета, либо скорость в qsp плеере?

Bup0H:

Подскажите, почему некоторые гифки проигрываются нормально, а у некоторых искажаются либо цвета, либо скорость в qsp плеере?

Кусп не терпит оптимизированные гифки. Что бы работать с гифками в куспе надо осваивать програму GIF Movie Gear. Она простая и все что нужно там есть. Там можно разоптимизировать гифку и отрегулировать скорость.

Можно гимпом разоптимизировать ещё. Если не получается - скидывайте мне гифки - сделаю вам так, чтобы оно в куспе игралось. :)) адрес: ajenta@qsp.su

Люди добрые подскажите пожалуйста.
Вопрос: как правильно привязать голод ко времени? Допустим, чтобы раз в час голод= - 1 ? (Всю голову себе уже сломал, хотя чувствую, что решение лежит на поверхности)
У меня есть вот этот календарь:

JDN = JDNStart + time/1440 
hour = (time/60) MOD 24 
minut = time MOD 60 
weekday = (JDN MOD 7) + 1 

JDa = JDN + 32044 
JDb = (4*JDa + 3)/146097 
JDc = JDa - (146097*JDb/4) 
JDd = (4*JDc + 3)/1461 
JDe = JDc - 1461*JDd/4 
JDm = (5*JDe + 2)/153 

day = JDe - (153*JDm+2)/5 + 1 
month = JDm + 3 - 12*(JDm/10) 
year = 100*JDb + JDd - 4800 + JDm/10 
$hour = iif (hour < 10, '0<<hour>>', '<<hour>>') 
$minut = iif (minut < 10, '0<<minut>>', '<<minut>>')

kolvados, привет, сразу говорю, что не эксперт)

Лучше бы ты заменил код времени на более простой. Например:

!!!Время
!!минуты в часы
:loopminute
if minute>=60:
	 hour+=1
	 gs 'gs_время'
	 minute-=60
	 jump'loopminute'
end
!!часы в сутки
:loophour
if hour>=24:
	 day+=1
	 dayspast+=1
	 weekday+=1
	 hour-=24
	 jump'loophour'
end
!!Цикл дней недели
:loopweek
if weekday>7:
	 weekday-=7
	 jump'loopweek'
end
!!Дни в месяцы
:loopmonth
!это еще и годовая метка, ибо смена года влияет на високосность
!Благодаря этому ифу, мы прервем конвертацию дней в месяцы, если месяцев набралось более чем на год. Сначла месяцы в год, потом возвращаемся снова к дням в месяцы.
if month<13:
	 !Невисокосный февраль
	 if month=2 and day>28 and year mod 4!0:
     month+=1
     day-=28
     jump'loopmonth'
	 end
	 !Високосный февраль
	 if month=2 and day>29 and year mod 4=0:
     month+=1
     day-=29
     jump'loopmonth'
	 end
	 !Январь, март, май, июль, август, октябрь, декабрь
	 if (month=1 or month=3 or month=5 or month=7 or month=8 or month=10 or month=12) and day>31:
     month+=1
     day-=31
     jump'loopmonth'
	 end
	 !Апрель, июнь, сентябрь, ноябрь
	 if (month=4 or month=6 or month=9 or month=11) and day>30:
     month+=1
     day-=30
     jump'loopmonth'
	 end
end
!!месяцы в годы
if month>12:
	 year+=1
	 month-=12
	 jump'loopmonth'
end
!Сопоставление текстового названия дня недели его числовому значению
if weekday=1:$weekday='Понедельник'
if weekday=2:$weekday='Вторник'
if weekday=3:$weekday='Среда'
if weekday=4:$weekday='Четверг'
if weekday=5:$weekday='Пятница'
if weekday=6:$weekday='Суббота'
if weekday=7:$weekday='Воскресенье'
!тоже самое, только для месяцев
if month=1:$month='Января'
if month=2:$month='Февраля'
if month=3:$month='Марта'
if month=4:$month='Апреля'
if month=5:$month='Мая'
if month=6:$month='Июня'
if month=7:$month='Июля'
if month=8:$month='Августа'
if month=9:$month='Сентября'
if month=10:$month='Октября'
if month=11:$month='Ноября'
if month=12:$month='Декабря'
!преобразовывает, например, 9 часов в 09 часов
if hour<10:$nullh='0'
if hour>=10:$nullh=''
!тоже самое, но для минут
if minute<10:$nullm='0'
if minute>=10:$nullm=''

Сам в начале работал с тем, что у тебя, но потом забил)

Что касается убывания, то здесь:

:loopminute
if minute>=60:
	 hour+=1
	   gs 'gs_время'
	 minute-=60
	 jump'loopminute'
end

В gs ‘gs_время’ прописываешь gg[’голод’]-=1 (или как там у тебя голод обозначается) и все должно работать

P.S. Если решишь использовать этот код, то формат вывода:
pl’Время <B><<$nullh>><<hour>></B>:<B><<$nullm>><<minute>></B>’
pl’Сейчас <<day>> <<$month>> <<year>> года, <<$weekday>>.’

Большое спасибо. Только не очень понятно что есть в данном раскладе ‘gs_время’, разве не в него мне надо весь этот код вмантировать?
Есть еще одна проблема: если я захочу допустим “поспать в кровати” и пройдет не один час, а два но голод тем не менее отнимется все равно 1.

kolvados, Нет, у меня пока что в ‘gs_время’, прописано только gg[’бодрость’]-=3.

Да, проблема есть. Но я бы решил ее так:

act 'Спать':
               minute +=480
               gg['Бодрость']=100
               gg['голод']-=N
         gt 'Кровать'

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

Log in or Register to post comments.