Как сделать?
…
Если ты хочешь именно разобраться, то лучше самому вникнуть.
Первый кусок кода в моём посте - аналог кода “фраза1 = 1”. Во втором куске кода есть аналог кода “if фраза1 = 1: *pl ‘фраза1’”.
Интересно зачем в форуме тема “Как сделать”, если есть шанс что ответ будет вникай сам ну или как в данном варианте - лучше вникнуть самому. Очевидно же, если бы мог вникнуть не спрашивал бы.
Pasha:
Интересно зачем в форуме тема “Как сделать”, если есть шанс что ответ будет вникай сам ну или как в данном варианте - лучше вникнуть самому. Очевидно же, если бы мог вникнуть не спрашивал бы.
Я рассказал как сделать, но получил в ответ подобие фразы “сделай за меня”, после чего подсказал, как связать написанное мной с твоим кодом.
Могут быть две цели вопросов: для того, чтобы лучше разобраться в написании кода, и для того, чтобы решить задачу для своей игры, забив на понимание. Если я перепишу твой пример в соответствие со своим кодом, это не сделает код более понятным. Но если я неправильно понял, и твоя главная цель - не разобраться, а просто сделать конкретный функционал, я могу сделать тебе пример ближе к вечеру, когда время найдётся.
Предложу в теме небольшой код для рандома фраз нпс-персонажей, возможно кому-нить пригодится
!Текстовой массив фраз
$txt[0] = 'фраза 1'
$txt[1] = 'фраза 2'
$txt[2] = 'фраза 3'
$txt[3] = 'фраза 4'
$txt[4] = 'фраза 5'
$txt[5] = 'фраза 6'
$txt[6] = 'фраза 7'
$txt[7] = 'фраза 8'
$txt[8] = 'фраза 9'
$txt[9] = 'фраза 10'
...
!Фраза персонажа 1
$txt_tmp = $txt[RAND(0,4)]
'(Персонаж 1)-'+'<<$txt_tmp>>'
...
!Фраза персонажа 2
$txt_tmp = $txt[RAND(5,9)]
'(Персонаж 2)-'+'<<$txt_tmp>>'
Таким образом, можно использовать один массив, для например приветствий или прощаний, сразу для нескольких\всех персонажей. Базу фраз можно легко модифицировать или локализировать не лазя по всему коду.
п.с. Если подобная тема уже была, извиняюсь. Просто подумал, что подобный оборот будет полезен.
newsash:
Могут быть две цели вопросов: для того, чтобы лучше разобраться в написании кода, и для того, чтобы решить задачу для своей игры, забив на понимание. Если я перепишу твой пример в соответствие со своим кодом, это не сделает код более понятным. Но если я неправильно понял, и твоя главная цель - не разобраться, а просто сделать конкретный функционал, я могу сделать тебе пример ближе к вечеру, когда время найдётся.
“if no arrpos(’$порядок_текстов’, ‘фраза1’): $порядок_текстов[]=‘фраза1’” - arrpos это оператор работающий с массивом вот в лэлпе написано возвращает индекс элемента массива с названием [$выражение 2], равного значению выражения [выражение 3]. Но у тебя в примере стоит NO [#выражение] - отрицание. Верно, если [#выражение] ложно и наоборот - этим примером я хочу сказать что без объяснений что делает хотябы эта строка твоего кода мне не понятно что вообще происходит. Далее “i += 1, if i < arrsize(’$порядок_текстов’): jump ‘loop’” - i += 1? Это просто вариант синтаксиса как сокращение gt вместо goto и эквивалент i=i+1? И далее по тексту кода вопросы вопросы…
newsash В общем “конкретный функционал” помог бы и если не трудно, именно объясни, что делает та или иная строка кода. в самом примере.
Pasha, постараюсь сегодня найти время сделать тебе пример. Кстати, ты старым вариантом справки пользуешься. Новый - wiki.qsp.su/help:arrays.
Немного комментариев: if no arrpos - проверка, что в массиве нет элемента с таким значением. массив[] = … - добавление элемента в конец массива.
По второму куску - это цикл do-while (справка по jump) по всем элементам массива. Внутри цикла элемент массива проверяется на равенство значениям ‘фраза1’ или ‘фраза2’, и при равенстве выводится соответствующий текст.
i += 1 действительно эквивалент i = i + 1.
Pasha, ##text##
Комментарии я уже в предыдущем посте дал. С no arrpos промашка вышла - в файле исправленная версия. Появятся вопросы - пиши.
Добрый день!
А есть ли в языке корень, степенная функция и логарифм? Или хотя бы что-то из этого? В онлайн справке не обнаружил… Или эти функции отсутствуют, поскольку переменные могут быть только целые?
GrayWolf:
Добрый день!
А есть ли в языке корень, степенная функция и логарифм?
В самом языке - нет. Степенная функция и корень реализуются относительно просто, про логарифм - не знаю.
newsash,
спасибо. Понятно, что все можно реализовать через разложение в ряд, или на крайний случай функцию задать таблично…
Кстати, может быть кто-то уже писал модуль для работы с вещественными числами? Не хочется изобретать велосипед…
GrayWolf:
Кстати, может быть кто-то уже писал модуль для работы с вещественными числами? Не хочется изобретать велосипед…
Я о таком не слышал, да и ненужно это.
GrayWolf, в кусп оперируют целыми числами.
Я писал модуль для работы с вещественными числами. Вещественные числа хранятся в виде строк.
Может быть есть у Олегуса, он много чего делал. Мог и модуль такой сварганить.
Aleks Versus, спасибо!