RU 📌 Pinned

Как сделать?

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

Aleks Versus Moderator 20.12.2013 06:20 (12 years ago)

EL_RIO:

$loc=$curloc

Разве loc - не зарезервированное слово для функции?

Farfignugen:

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

мне не кажется удобным вставлять блоки проверки действий в календарь. Но хозяин - барин.

Farfignugen:

Не все может быть кратным часам или минутам.

Покажи в своём коде пример действия, которое будет происходить раз в 1 день 22 часа 59 минут.

Farfignugen:

Но дело в том, что циклы в этом коде редко срабатывают, и вообще никак не нагружают систему.

Пока автор не воткнёт твой календарь в аэру и не выставит переход в 10040 минут. :lol:

Разве loc - не зарезервированное слово для функции?

В нынешней версии классического плеера, будет работать. В следующей, а также в Андроид-плеере и Навигаторе, уже нет.

Aleks Versus Moderator 20.12.2013 07:53 (12 years ago)

Nex:

В нынешней версии классического плеера, будет работать.

Будет работать, как функция проверки наличия локации, или как переменная?

Nex:

В нынешней версии классического плеера, будет работать. В следующей, а также в Андроид-плеере и Навигаторе, уже нет.

Функция добавлена в 5.7.0. Так что и в нынешней версии не будет работать.

Aleks Versus,
работает в качестве обычной переменной.

newsash,
ты ошибаешься.

Nex:

ты ошибаешься.

Пруф, см. пункт 2.

UPD: Выяснилось, что действительно есть такой баг, что $LOC работает как переменная.

Aleks Versus Moderator 20.12.2013 12:38 (12 years ago)

$MOD, $OBJ, $LOC, $NO, $AND, $OR - работают, как переменные
MOD, OBJ, LOC, NO, AND, OR - работают как функции.

Является ли символ $ частью имени переменной, в таком случае?
killvar ‘loc’ убивает массив $loc.

Aleks Versus:

Является ли символ $ частью имени переменной, в таком случае?

Если закопаться в механизм хранения переменных интерпретатором, то каждая переменная - это массив структур из двух элементов, один из которых - число, а второй - строка. А на уровне языка QSP обращение к строке идёт через ‘$’, а к числу - без этого знака. Для переменных с названиями MOD, OBJ, LOC, NO, AND, OR доступно только строковое значение (с использованием ‘$’), а обращение к числовому перебивается вызовом функции.
Лично я считаю это недоработкой языка, нужно Байту передать.

P.S. Кому нечего делать, можно ещё поэкспериментировать с ‘$$$переменная’. :)

newsash,
Помоги разобраться:
if selobj = ‘плакат с девицей’:
*clear
‘<b>Плакат с девицей</b>’
‘Забавный такой и информативный плакат’
‘<a href=“EXEC:pl1=3 & delobj $selobj & *clear”>сорвать</a>’
end
end

Так вот “pl1” не присваивается значение “3” но все остальное работает то есть клеар и удаление выделенного объекта.

Aleks Versus Moderator 21.12.2013 15:47 (12 years ago)

попробуй изменить переменную на pal1

Либо, если дело не в неправильном чтении pl, значит переменной где-то ещё присваивается другое значение.

P.S.: проверил. Всё прекрасно работает. pl1 присваивается значение 3. Проверяй остальной код.

Alex Versus. Спасибо за ответ но.. Еще сильнее запутался(( Может такое происходить из-за того что код выше обрабатывается в локации “счетчик предметов”?

Aleks Versus Moderator 21.12.2013 16:36 (12 years ago)

Pasha,
“счетчик предметов” я так полагаю ты поместил в $onobjsel?

$onobjsel = "счетчик предметов"

Так?

Значение в pl1 передаётся, когда ты нажимаешь на гиперссылку. Это точно. Проверь, где ещё используется pl1. Скорее всего где-то дальше по коду. Т.е. после того, как ты срываешь плакат, происходят ещё какие-то действия. Тебе нужно отследить, где именно меняется pl1. Поскольку ссылка уничтожает предмет “плакат с девицей”, выделение снимается и обработка локации “счетчик предметов” не происходит.

Вот исходник##text##

Aleks Versus Moderator 21.12.2013 17:03 (12 years ago)

Pasha,
проверил. Переменной pl1 присваивается значение 3. Всё работает.
Можешь проверить сам.

Spoiler

Создаёшь локацию ‘usercom’ и пишешь в ней следующее:

dynamic $user_text

На локации “начало” меняешь:

showinput 0

на

showinput 1

Это покажет строку ввода на экране.
Четвёртой строкой на локации “начало” напиши

$usercom = 'usercom'

Теперь весь код, вводимый в строку ввода, будет выполняться по нажатии “enter”. То есть можешь ввести “pl1” в строку ввода и на экран выведется его значение.

Вот подправленный исходник
##text##

Ну да, всё понятно. Небольшое недопонимание, как работает QSP.
У тебя при выборе предмета выполняется вся локация “меню_объекта” целиком.
По нажатию ссылки выполняется только код ссылки, т.е. pl1=3, но код “меню_объекта” уже выполнен со старым значением.
Чтобы всё работало, нужно в код EXEC дописать команду gs ‘‘меню_объекта’’.

Log in or Register to post comments.