RU 📌 Pinned

Как сделать?

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

-локация обраб. переходов-(locnum-номер лкации)
if locnum>0:
ACT ‘Осмотреться’:
if locnum=3 and hour>7 and minut>0 and minut<10:
act ‘Поговорить с ****’:
gt ‘Диалог’
end
else
msg ‘Нет здесь никого, кроме меня’
gt curloc
end
end
end

Всегда переходит к else, хотя все условия подходят.Код находится влокации обработчике, что-бы действие было доступно везде, к тому же так удобно задавать расписание сразу для всех локаций.
От переноса кода в локаци где происходит собственно действие ничего не меняется, проблема таже.

Точнее numloc номер локации в которой происходит ‘осмотр’ и без двух дополнительных условий на время все работает.

Добавь после act перед if вывод переменных. Они подходят под условие?

Да, переменные подходят все.

Странно, тогда я не могу вот так по описанию найти ошибку. Код должен работать.

simulyator_brojdeniya_po_domu.qspНадеюсь прикладывать файлы игы не запрещено правилами форума….(Я страдаю изрядным графоманством и поэтому сообщение просто с примером кода будет слишком длинным)
В любом случае посмотрите кто-нибудь,пожалуйста, ибо я не понимаю где ошибка(((

Vasssa,
всё работает.

Шесть раз сделать зарядку, чтобы наступило 8 часов;
Пройти в коридор, потом в комнату 1;
Выбрать “Осмотреться”.

Ладно, хотя это немного странно, т.к. НПС должен появляться в 7:00 и исчезать в 7:10, а не в 8:00, видимо ошибка в формуле таймера, в любом случаее благадарю за потраченное время. :=D

Vasssa,
смотри в какую тему отвечаешь. Пришлось перемещать сообщение.

НПС должен появляться в 7:00 и исчезать в 7:10, а не в 8:00

Именно в 8. Потому что у тебя в условии написано:

hour>7

А следующее число больше 7, это 8.
Чтобы появлялся с 7 часов, ты должен записать условие так:

hour >= 7

Есть вот такой код:

:loop
a+=1
b[a]=rand(1,100)
'b[<<a>>]=<<b[a]>>'
if a<10: jump 'loop'

act 'Вернуть максимальное значение b':
'b = <<max["b"]>>'
end
act 'Вернуть минимальное значение b':
'b = <<min["b"]>>'
end

В связи с этим, есть ряд вопросов:
1. Почему если написать в условии

if a<=10: jump 'loop'

значений b будет 11?
2. Максимальное значение b возвращается правильно, а вот минимальное всегда равно 0. Почему так, если изначально b задавалось от 1 до 100?
3. Можно ли рассортировать полученный список по возрастанию/убыванию?
4. Как правильно задать условие для того чтобы вернуть значение a при максимальном/минимальном значении b?

1. 1,…,11 - это 11 значений (выход из цикла будет на 11).
2. Скорее всего ситуацию портит b[0] и нужно инкремент а переставить в конец.
3. Можно. Где-то на форуме была сортировка массивов или можно самому применить например сортировку пузырьком.
4. ARRPOS(’b’, значение)

И нужно помнить, что элементы массивов нумеруются с нуля.

newsash, со вторым и четвертым я разобрался, спасибо. Пойду искать про пузырьки..
Ё-моё! Как-то сложно всё с этими пузырьками! Я сделал попроще:

g=1
:loop_1
'#<<g>> <<max("b")>>, <<arrpos("b", max("b"))>>'
g+=1
b[arrpos('b',max('b')]=0
if g<=10: jump 'loop_1'

Вроде бы работает…
P.S.
Однако, не совсем. Получилось какое-то кладбище переменных - как они выглядели видно, а вот сделать с ними уже ничего нельзя. Видимо придется их сначала куда-то копировать и прятать..

svandrus, вот здесь werewolf даёт пример сортировки.

Aleks Versus Moderator 05.12.2014 23:04 (11 years ago)

newsash,
по-моему переход к конкретному сообщению не работает. По-крайней мере у меня открывает текущую страницу в новой вкладке.
svandrus,
у меня есть сортировка пузырьком. Можешь воспользоваться или рассмотреть, как сделано.

Aleks Versus,
со ссылками на конкретное сообщение, есть проблема.

Форум рассчитывает её, исходя из количества сообщений на страницу, установленных в профиле копирующего ссылку пользователя. У того, кто переходит по этой ссылке, количество сообщений на страницу может быть другим. Тогда в теме, где много страниц, он не попадёт на нужную страницу, а следовательно и на нужное сообщение.

Log in or Register to post comments.