Как сделать?
…
Lisichka, вот вам еще небольшой совет.
Замените код
лицо = rand (1,3)
if лицо = 1:
$лицо = 'Противник цепко следит за вами немигающим взглядом. Вы замечаете, как по лбу у него стекает капля пота.'
end
if лицо = 2:
$лицо = 'Противник утирает пот с верхней губы. Вы замечаете, что у него непроизвольно дернулся уголок рта.'
end
if лицо = 3:
$лицо = 'Противник чешет затылок. Вы замечаете, как он рефлкторно кусает губу.'
end
на
лицо = rand (1,3)
if лицо = 1:
$лицо = 'Противник цепко следит за вами немигающим взглядом. Вы замечаете, как по лбу у него стекает капля пота.'
elseif лицо = 2:
$лицо = 'Противник утирает пот с верхней губы. Вы замечаете, что у него непроизвольно дернулся уголок рта.'
else
$лицо = 'Противник чешет затылок. Вы замечаете, как он рефлкторно кусает губу.'
end
У вас нет ошибки, но второй вариант компактнее и легче читаем. Кроме того, хоть это и совсем несущественно для современных компьютеров, второй, в общем случае, быстрее. Поясню.
В первом варианте при любом значении “лицо” будет произведено три проверки. Даже если лицо=1, игра все-равно будет сравнивать его с двойкой, а потом с тройкой. Так написано в коде и машина не может игнорировать его инструкции.
Во втором варианте будет выполнено от одной до двух операций сравнения. Если лицо=1, то на первом сравнении все и закончится. Если лицо=2 или лицо=3, то узнав, что лицо<>1, игра сравнит его с двойкой и в зависимости от результата выполнит ту или иную инструкцию.
UPD: Убрал “:” после else.
https://qsp.org/forum/305-ogranicenia-qsp - в этой теме почему-то больше нельзя писать, потому спрошу здесь - а есть ли какая возможность узнать количество переменных в игре, чтоб не впучную искать и считать, может команда какая специальная?
evp,
Узнала много нового, спасибо, заменю!
Ааа.. это очень круто) как без этого вообще можно было работать! спасибо! Но сразу же возникают еще вопросы: что значит - “не инициированные переменные”, “не используемые переменные”, и “неверное удаление предметов”, - ведь вроде б как, приведенные там вполне себе инициируются и используются, а в чем может быть “неверность” удаления предмета, вообще не понимаю. Ну, и, собственно, вроде бы, на глазок, этих самых переменных оказалось еще не так уж много, - однако сам анализатор их не подсчитывает?
mkir:
Ну, и, собственно, вроде бы, на глазок, этих самых переменных оказалось еще не так уж много, - однако сам анализатор их не подсчитывает?
Внизу в окошке лога:
Анализатор кода QSP v 1.2.24.0:
Выполняем поиск переменных…
Добавлено переменных: 55
Найдено обращений к неинициализированным текстовым переменным: 1
Найдено обращений к неинициализированным числовым переменным: 11
Найдено неиспользуемых текстовых переменных: 1
Найдено неиспользуемых числовых переменных: 1
А вот еще странная вещь - пишет, например - (Ошибка, локация “newloc”, строка #3880 : Неизвестное действие в выражении) - однако в этой локации строк где-то на триста меньше. Или (Ошибка, локация “Пираты”, строка #15159 : ACT без “:” ), хотя вот здесь строк вообще меньше сотни. Так как же найти эти ошибки?
mkir:
что значит - “не инициированные переменные”,
Выше вы видели, что “Найдено обращений к неинициализированным текстовым переменным: 1”
В примере это переменная $main_bg, к которй было вот такое обращение:
$content_window = '<div class="content_window" style="background: url(<<$main_bg>>)">'
Но при этом этой переменной нигде в коде явно не присваивалось значения. Она пустая с точки зрения анализатора. Вот что значит “неинициализированная”.
Это не всегда может быть верно. Например, я могу инициализировать эту переменную с помощью dynamic:
$varName = '$main_bg'
dynamic '<<$varName>> = "img/bckgrnd1.jpg"'
Но если вы не имеете привычки извращаться подобным образом, то скорее всего, анализатор прав и вы обращаетесь к переменной, не задав ей перед этим значения. Также, возможно, вы просто опечатались в названии переменной.
mkir:
А вот еще странная вещь - пишет, например - (Ошибка, локация “newloc”, строка #3880 : Неизвестное действие в выражении) - однако в этой локации строк где-то на триста меньше.
mkir:
что значит - “не используемые переменные”
Кэп отвечает. Переменные, которые были инициализированы (им явно было присвоено значение) и к которым более не было обращений в коде, назовем неиспользуемыми.
Но опять с оговоркой:
someValue = 1125
$varName = 'someValue'
dynamic 'myBeautyVar = <<$varName>>'
В этом случае переменная someValue будет причислена к неиспользуемым.
UPD Исправил код в примере на верный
mkir:
что значит - … “неверное удаление предметов”,… в чем может быть “неверность” удаления предмета, вообще не понимаю
Nex:
попытка удалить предмет, который нигде не добавляется
Надо просто читать :)
Ладно, вы уж извиняйте за назойливость, я умнею, но постепенно, не сразу)
Не стоит извиняться. Вы ничего плохого не сказали.
Собстна, в чём ошибка?
ACT 'Купить "Целитель"':
IF money < 15:
msg 'Пересчитав свои деньги вы понимаете, что не можете этого себе позволить'
ELSE
el_hp_col = input ("Ведите количестов покупаемого товара")
money -= 15*el_hp_col
el_hp += el_hp_col
END
END
ACT 'К другим товарам':
GT '3.1.1'
END
Игрок должен вести количество нужного ему эликсира, но, даже если денег меньше, можно купить хоть 10000, и денег будет -10000, проверка IF не помогла((
Может кто знает что делать, с input первый опыт))
Oliver,
а переменная money случайно находится не в одной локации с кодом на покупку? я вставила ваш код и все работает вроде, только переменная money и основной код у меня на разных локациях. вот ссылка