Как сделать?
…
Знаю, что уже спрашивал про похожее зацикливание, но уж простите гуманитария :rolleyes: - как зациклить одну песню?
Совёнок,
В начале игры:
$counter = 'COUNTER'
На локации COUNTER:
play 'одна_песня.mp3'
здравствуйте уважаемые гуру!
Думаю стоит как нибудь набраться терпения и прочесть всю тему с самого начала. много интересного узнаю.
А пока пара вопросов.
1) Уже задавался недавно, как реализовать нахождение НПС на локации.
В голову приходить только идея в локации времени прописать флажки НПС для каждой локации для определенного времени, а при входе на локацию проверять 1 или 0 т.е есть НПС на локации или нет. Тут в локации времени можно реализовать какую нибудь рандомность.
Либо на каждой локации в зависимости от времени прописать нахождения НПС, тут уже все будет жестко привязано.
Как это делается правильно? есть ли примеры игр где это хорошо реализовано?
2) И еще в одной из игр видел интересную реализацию кнопок. При выполнение действия, кнопка меняет цвет и уже повторно нажать не удается. Не до конца понял механизм, как это устроено, т.к примера кода нет.
Bup0H:
Уже задавался недавно, как реализовать нахождение НПС на локации.
Я напротив завожу для каждого npc переменную, где прописываю, на какой локации они находятся. Типа
$npc[0] = 'дом'
$npc[1] = 'Улица'
!или
$npc['Петя'] = 'дом'
$npc['Вася'] = 'улица'
Со временем нахождения немного сложнее. Но если в кратце, то “локации” в qsp можно использовать не только как Локации, но и как области кода, где можно описать все… эм… действия npc.
Bup0H:
И еще в одной из игр видел интересную реализацию кнопок.
используется ДЕЙСТВИЕ ПО УСЛОВИЮ (ищи поиском), где активное действие выводится при одном значении флага, а заблокированное при другом. Цвет делается с помощью html.
Не так задал вопрос :rolleyes: Скажу по другому: в игре есть несколько отдельных локаций. Для каждой локации нужно зациклить одну определённую аудиозапись. Как это можно сделать?
Совёнок,
На локации COUNTER:
if $curloc = 'дом':
play 'музыка для дома.mp3'
elseif $curloc = 'улица':
play 'музыка для улицы.mp3'
elseif ....
Или на каждой локации, где мелодия должна смениться, присваиваешь отдельной переменной путь до файла музыки, например:
!дом
$music = 'музыка для дома.mp3'
А на локации COUNTER пишешь:
play $music
Aleks Versus,
Спасибо, попробую :)
font color = blue
я так понимаю это уже HTML. Какие цвета по умолчанию можно вписать (Red, Green и т.п) есть ли весь список?
Bup0H:
font color = blue
я так понимаю это уже HTML. Какие цвета по умолчанию можно вписать (Red, Green и т.п) есть ли весь список?
Лучше используй цветовые коды.
Вот тут например можешь себе подобрать: http://html-color-codes.info/
(Используй HTML Color Picker)
<font color = #0000FF> </font> - как результат: синий цвет.
Как растянуть фон на всё окно? То есть как только по высоте или ширине изображение упирается об край то при изменении размеров окна образуется лишенное фона пространство.
Genryzz:
Как растянуть фон на всё окно?
в классическом плеере при задании фона через $backimage - никак.
Genryzz,
Возьми тёмную, светлую картинку, и с верху наложи BCOLOR под стать цвету картинки, тогда будет казаться что она на весь экран.
Aleks Versus и Oliver спасибо.
Назрел ещё вопрос. Нужно получить определенную сумму из случайных чисел. Случайные числа определенны, но их количество зависит от суммы. После того как числа и их кол-во определенны они выводятся.
Пример. Сумма равна 9. Случайные числа выбираются из 2,3,5 и 9. Итого у нас группы 2,2,5 ; 2,2,2,3 ; 3,3,3 ; и 9.
Как создать такую функцию?
Genryzz,
Это своего рода частный случай разложения на слагаемые. Примитивный вариант:
Spoiler
! заполняем массив числами (они определены) - исходный массив
mass[0]=2
mass[1]=3
mass[2]=5
mass[3]=9
! задаём "сумму" выброшенных чисел = 9
summ = 9
! далее начинается цикл. Метка:
:for
! выкидываем число
! получаем индекс
index = rand(0,arrsize('mass')-1)
! фиксируем число
number=mass[index]
! проверяем, возможно ли вычитание
if summ - number = 0:
! если при вычитании числа из summ получается 0, значит мы нашли последнее число
! записываем его
search[]=number
elseif summ - number < min('mass'):
! если разность summ и числа - меньше минимального значения в массиве, значит
! число, которое мы вытянули, нам не подходит
! и не подойдёт, его можно убрать из исходного массива
killvar 'mass',index
! записывать его не нужно, просто возвращаемся и повторяем цикл
jump 'for'
elseif summ - (number + min('mass')) < 0:
! если разность между summ и суммой выпавшего и минимального чисел в массиве
! меньше нуля, это число так же нам не подходит и не подойдёт
killvar 'mass',index
jump 'for'
! можно объединить с предыдущим условием через оператор OR
else
! во всех остальных случаях число нам подходит:
! запоминаем его в конечный массив
search[]=number
! уменьшаем summ на это число
summ -= number
! повторяем цикл
jump 'for'
end
Для проверки достаточно
i=0
:print
if i<arrsize('search'):
*pl 'search[<<i>>] = <<search[i]>>'
i+=1
jump 'print'
end
Это, повторюсь, примитивный вариант, где не учитываются многие моменты, хотя в данном конкретном случае он работает, и будет работать в ряде других случаев с другими суммами, которые разлагаются на данные слагаемые.
P.S.: Хотя я вот сейчас подумал, может быть неправильно понимаю задачу?
1. Случайным образом выкидывается сумма = 9
2. Случайным образом выкидываются числа в пределах суммы? Т.е. 2, 3, 5, 9 - выпали случайно?
3. Потом функция находит группу чисел из этих случайно выпавших, которые дадут в итоге искомую сумму?
Задача так стоит? Или всё таки числа определены заранее.
Если поподробнее то речь идет о том что есть группа монстров. Каждый монстр имеет цену в определенное количество очков. Цель - при каждом столкновении с определенной группой встречать разных монстров в разном количестве.
Пример
Заранее заданные параметры
Группа1 = 10(сумма всех очков монстров в группе)
Группа2 = 16
Монстры
Имп_цена = 2
Демон_цена = 4
Дьявол_цена = 8
/Заранее заданные параметры
Один из возможных результатов.
Итого Группа1 состоит из монстр[1] = Имп ; монстр[2] = Имп ; монстр[3] = Имп ; монстр[4] = Демон
Итого Группа2 состоит из монстр[1] = Дьявол ; монстр[2] = Дьявол
P.S. Меня заботит возможность ситуации когда сумма цен всех элементов меньше суммы группы и разница меньше цены самого дешевого ‘монстра’
Сумма группы = 7 Цены монстров 2 и 3 Может ли получиться такой вариант 2,2,2 с остатком 1 который некуда пристроить?
P.S. После нахождения мы получаем массив.