Уроки по QSP. Номер 20. Локация-счётчик. Counter

preview_player
Показать описание
UPD^^^ Выяснилось, что я неправильно понимал порядок вызова локации-счётчика. Локация-счётчик не прерывает выполнение другого кода (локации, действия и любого другого), а становится в очередь на выполнение. Когда текущий блок кода (например, код текущей локации) выполнится до конца, тогда запустится выполнение кода локации-счётчика, если уже прошло достаточно времени. Например, локация-счётчик вызывается каждые 500 мс (settimer 500). Мы зашли на локацию "start", код на которой будет выполняться 520 мс. Тогда полностью выполняется код локации "start", но по прошествии 500 мс локация-счётчик становится в очередь. Когда код локации "start" выполнился (520 мс) запускается код локации-счётчика. Если код локации "start" выполняется за 100 мс, тогда после того, как этот код выполнен, если игрок бездействует, локация-счётчик запустится ровно на 500 мс. Именно поэтому мы можем наблюдать "плавание" значений msecscount в пределах нескольких мс, если используем msecscount на локации-счётчике.

Таймлинки:
00:30 Вспоминаем былые времена
01:05 Что такое локация-счётчик
01:17 Создаём локацию-счётчик
02:29 Запускаем и проверяем, как она работает
04:16 Порядок выполнения кода при наличии локации-счётчика
06:12 Где нужно и где можно использовать локацию-счётчик
08:00 Пишем отложенное действие
09:19 Проверяем, как работает отложенное действие
09:59 Как ускорить появление отложенного действия
10:20 Оператор SETTIMER
11:55 Почему время — примерное
12:25 Функция MSECSCOUNT
15:52 Сравниваем работу плеера при частом и редком обращении к локации-счётчику
17:30 Пишем код, который считает, сколько времени прошло с начала игры (дни, часы, минуты...)
23:48 Привязываем задержку к реальному времени
27:56 Пишем отложенную подсказку
38:18 Замедляем скорость вывода отложенной подсказки, не используя SETTIMER и пороговое время
40:05 Отложенное событие при нажатии на действие
44:44 Резюмируем (делаем выводы)
45:40 Обещания на будущее
46:40 Полезный совет
46:54 Outro, анонс будущих уроков
47:11 Поддержите платформу (ссылки в описании)
48:08 Посетите группу в vk (ссылки в описании)

Поддержите развитие платформы.

Играйте и участвуйте в обсуждениях игр, написанных на QSP. Скажите пару добрых слов автору, игра которого вам понравилась. Задонатьте на хостинг и поддержите разработчиков новых версий плеера.

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

Поддержите разработчиков новых версий плеера:

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

Всё это требует нашей с вами поддержки и участия, дабы платформа жила и развивалась.
Рекомендации по теме
Комментарии
Автор

Ура. Спустя почти два месяца я сподобился сделать таймлинки:


00:30 Вспоминаем былые времена
01:05 Что такое локация-счётчик
01:17 Создаём локацию-счётчик
02:29 Запускаем и проверяем, как она работает
04:16 Порядок выполнения кода при наличии локации-счётчика
06:12 Где нужно и где можно использовать локацию-счётчик
08:00 Пишем отложенное действие
09:19 Проверяем, как работает отложенное действие
09:59 Как ускорить появление отложенного действия
10:20 Оператор SETTIMER
11:55 Почему время — примерное
12:25 Функция MSECSCOUNT
15:52 Сравниваем работу плеера при частом и редком обращении к локации-счётчику
17:30 Пишем код, который считает, сколько времени прошло с начала игры (дни, часы, минуты...)
23:48 Привязываем задержку к реальному времени
27:56 Пишем отложенную подсказку
38:18 Замедляем скорость вывода отложенной подсказки, не используя SETTIMER и пороговое время
40:05 Отложенное событие при нажатии на действие
44:44 Резюмируем (делаем выводы)
45:40 Обещания на будущее
46:40 Полезный совет
46:54 Outro, анонс будущих уроков
47:11 Поддержите платформу (ссылки в описании)
48:08 Посетите группу в vk (ссылки в описании)

aleksversus
Автор

Если будет время и желание можете еще вот это рассмотреть:
Сделал алгоритм по проверке значения ячейки массива, если значение ячейки не равно единице, очистить ячейки массивов, но QSP игнорируя условие (if был_нанят[ik]<>1) очищает значения ниже. Проблема точно в этом куске кода, я не могу понять что не так, кучу раз пользовался условиями и всё работало, здесь же все также, но не работает.
ik=0
:system_troop
if ik=20:
jump "system_troop_1"
end
if был_нанят[ik]<>1:
$port[ik]=''
$name[ik]=''
$race[ik]=''
ik=ik+1
jump "system_troop"
end
if был_нанят[ik]=1:
ik=ik+1
jump "system_troop"
end
:system_troop_1

QSP просто взял и начал игнорировать условия, первый раз такое вижу.

mast
Автор

Просмотрел все уроки. За уроки очень благодарен. Но у меня зреет один вопрос. Насколько адекватно будет пытаться переносить пошаговую боевую систему из DnD в QSP? При условии соблюдения всех тамошних правил, вроде инициативы.

ehdicdx
Автор

Хочу сделать игру в жанре менеджмента, затык в том, что не могу понять как делать генерацию рандомных персонажей, которых ты нанимаешь в свою команду и отправляешь на задания, вы можете как-то подсказать, я понимаю что нужно использовать массивы, но как, дошел пока до этого урока.

mast
Автор

В подъезде надо сделать
else
floor=1
и на улице не надо будет писать floor=1

ntopyos
Автор

if $curloc="Главное Меню":
count['dec']=count['dec']+1
if count['dec']=10:
act "кнопка появиться через 10 сек":
cla
"текст при нажатии"
end
end
end
что не так? 0 реакции

lsjleli