Как сделать?
…
newsash:
Мне показалось или тебе вообще яблоки в инвентаре не нужны?
Яблоки просто пример. Я же учусь. Идея в том, что есть n-количество однотипных предметов и их надо как-то хранить. В инвентаре проще всего и хранить и вызывать для рассмотрения. Хранение в массиве принуждает запомнить номер, чтобы потом найти искомый объект, но это уже не так сложно.
Olegus t.Gl.:
Проверь <probe>Текст</probe>.
Проверил, почитал стандарты, посмотрел. Да, похоже ты прав. В HTML5 все неизвестные теги не должны отображаться (грубо говоря), а то, что браузеры отображают текстом теги, которые начинаются с цифры - недоработка (или я что-то пропустил, и они просто не считаются тегами).
Несколько вопросов.
1. Чему равно переменная изначально? Если она не задавалась? Например:
a=4+b
Какой будет результат выражения, если переменная b используется впервые?
2. Локация счетчик (ну, которая задается через $counter) как работает? Насколько я понял - это локация операторы на которой автоматически выполняются каждые 2 секунды, да?
3. Хочу для защиты от всяких артмани сделать следующую конструкцию изменения переменных:
testvar=testvar+10
testvar1=testvar
killvar 'testvar'
testvar=testvar1
killvar 'testvar1'
Сработает ли и не вызовет ли багов?
По-умолчанию, можешь считать, что все числовые переменные равны нулю, а все текстовые пустому значению (нет символов).
Изобретать что-то для защиты от “артмани”? Не майся, оставь это совести игрока.
saroff:
- Локация счетчик (ну, которая задается через $counter) как работает? Насколько я понял - это локация операторы на которой автоматически выполняются каждые 2 секунды, да?
Период между выполнениями задаётся оператором SETTIMER в мс. По умолчанию, 500мс (2 раза в секунду).
saroff:
- Хочу для защиты от всяких артмани сделать следующую конструкцию изменения переменных:
От артмани довольно сложно защититься, да и смысл? Указанная конструкция должна работать, но не факт, что защитит от артмани.
Подскажите пожалуйста, хочу сделать чтоб при заходе на локацию текст на экране добавлялся по частям, через одинаковые интервалы времени.
$main='Fight'
if $main='Fight':
!goto $curloc
wait 2000
end
a=0
:step
if a<10:
$main=$main+'
Round '+a
!goto $curloc
wait 2000
a=a+1
jump 'step'
end
Не хватает только обновления экрана, но goto $curloc в “Выполнить при посещении” не работает, как можно сделать по другому? Или такой вариант не прокатит?
Dakkon:
Не хватает только обновления экрана, но goto $curloc в “Выполнить при посещении” не работает, как можно сделать по другому? Или такой вариант не прокатит?
Копай в сторону $counter.
Мини-игра “Взорви зомби” - пример использования локации-счётчика
UPD:
Посмотрел код, у тебя вообще вывода на экран нет. Вот так должно работать:
*PL 'Fight'
wait 2000
a=0
:step
if a<10:
*PL 'Round '+a
wait 2000
a=a+1
jump 'step'
end
Спасибо, идею понял, буду думать.
Вывода там нет потому что в области “Описание” выводится <<$main>>.
Я думал добавлять к нему сообщения кусками и обновлять экран.
Dakkon:
Спасибо, идею понял, буду думать.
Вывода там нет потому что в области “Описание” выводится <<$main>>.
Я думал добавлять к нему сообщения кусками и обновлять экран.
В общем я знаю два способа: первый - через $counter (не блокирует интерфейс), второй - в локации через WAIT (блокирует интерфейс, т.е. если там есть действия или предметы, они не будут нажиматься).
Обновлять основное описание проще всего через
*CLR
*P $main
В игре “Город Туманов” было реализовано подобное через COUNTER. Там был бредящий во сне персонаж. Если ГГ находился в одной с ним локации, то на экран случайным образом выпадали фразы из этого бреда.
Dakkon:
Спасибо, идею понял, буду думать.
Вывода там нет потому что в области “Описание” выводится <<$main>>.
Я думал добавлять к нему сообщения кусками и обновлять экран.
Можно ещё воспользоваться модулем “QSP: Таймер”. Он предназначен как раз для срабатывания различных событий по таймеру. При этом событий может быть несколько, срабатывать они могут в разное время, а автору не нужно заморачиваться с COUNTER.
Olegus t.Gl.:
Можно ещё воспользоваться модулем “QSP: Таймер”.
Мне больше подходит вариант с циклом и
*CLR
*P $main
С локацией-счетчиком тоже работает, думаю будет и с таймером. Я с ними пока не разобрался.
Столкнулся с небольшой проблемой, в чем соль разобрался, но осталось странное ощущение. Следующий код (как пример проблемы)…
$a[0]=1
$a[1]=2
$a['1,2']=3
$a[2]=4
$a['1,3']=5
$a[3]=6
*pl $a[0]
*pl $a[1]
*pl $a['1,2']
*pl $a[2]
*pl $a['1,3']
*pl $a[3]
После обработки плеером выдает следующее:
1
2
4
4
6
6
Это так и должно быть? Об этой особенности в руководстве, в той части где о массивах говорится, ничего не сказано : В результате когда у меня стала возникать ошибка (часть индексов массива у меня была задана одним числом, а часть - несколькими - строкой) мне пришлось едва ли не полчаса разбираться в чем ее причина (элемент, к которому обращался код принял значение которое (как я думал) он вообще ну никак принять не мог). В итоге сделал все индексы строчными расставив кавычки. Следовало бы предупреждать, что стоит остановится в выборе индексов для массива либо числами, либо строками. И вообще какая-то странная фича это. Не пойму какой от нее толк.
Это так и должно быть?
Да. Каждому строковому индексу соответствует определённый числовой.
Следовало бы предупреждать, что стоит остановится в выборе индексов для массива либо числами, либо строками.
Согласен. Это будет учтено в новой версии справки.
Stag_Beetle:
вообще какая-то странная фича это. Не пойму какой от нее толк.
Возможность пользоваться строковыми индексами - нормальная нужная фича.
То, что строковые и числовые индексы так переплетаются - особенности реализации. Второй вариант вариант привёл бы к тому, что массив со строковыми индексами и числовыми был бы двумя разными переменными.
И да, это действительно будет упомянуто в новой справке.