RU 📌 Pinned

Как сделать?

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

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'

Сработает ли и не вызовет ли багов?

Aleks Versus Moderator 21.10.2013 14:35 (12 years ago)

По-умолчанию, можешь считать, что все числовые переменные равны нулю, а все текстовые пустому значению (нет символов).

Изобретать что-то для защиты от “артмани”? Не майся, оставь это совести игрока.

saroff:

  1. Локация счетчик (ну, которая задается через $counter) как работает? Насколько я понял - это локация операторы на которой автоматически выполняются каждые 2 секунды, да?

Период между выполнениями задаётся оператором SETTIMER в мс. По умолчанию, 500мс (2 раза в секунду).

saroff:

  1. Хочу для защиты от всяких артмани сделать следующую конструкцию изменения переменных:

От артмани довольно сложно защититься, да и смысл? Указанная конструкция должна работать, но не факт, что защитит от артмани.

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

$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:

вообще какая-то странная фича это. Не пойму какой от нее толк.

Возможность пользоваться строковыми индексами - нормальная нужная фича.
То, что строковые и числовые индексы так переплетаются - особенности реализации. Второй вариант вариант привёл бы к тому, что массив со строковыми индексами и числовыми был бы двумя разными переменными.
И да, это действительно будет упомянуто в новой справке.

Log in or Register to post comments.