RU 📌 Pinned

Как сделать?

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

Дамир Белялов #654 29.04.2021 17:29 (4 years ago)

Aleks Versus:

killvar ‘hunter_animals_count’

Помогло, как раз пишу для себя бродилку кликер

Нужен совет: есть массив $mass с индексами ‘zero’, ‘chto-to’, ‘gde-to’.
Как вернуть именно строковой индекс а не числовую позицию? Буду благодарен, если подскажете. :)

Обыскал справку, но пока так и не нашел ответа.

HronoStranger,
Если нужно работать с индексами - делай числовые. В дискорде писали, что никак, вроде.

dmvikar,
Спасибо, значит буду думать.

Aleks Versus Moderator 20.05.2021 04:26 (4 years ago)

HronoStranger,
Можно завести отдельный массив, в котором будут храниться строковые индексы в связке с числовыми. А лучше два массива. Это несколько усложнит код.

Aleks Versus:

HronoStranger,
Можно завести отдельный массив, в котором будут храниться строковые индексы в связке с числовыми. А лучше два массива. Это несколько усложнит код.

Пример можешь соорудить? Я тоже подумал об этом, но так и не сообразил, как по значению вычислить индекс.

Aleks Versus:

Можно завести отдельный массив, в котором будут храниться строковые индексы в связке с числовыми. А лучше два массива. Это несколько усложнит код.

Нет, второй массив - самый оптимальный вариант, но без связки.
Я планировал вычислить строковый индекс для выведения его на экран.
Видимо, придется менять архитектуру участка кода. (который пока ничего не делает, баловался с отладкой)

Spoiler

x=0
$a=‘$<<$args[0]>>’
killvar ‘$mass’
copyarr ‘$mass’,’<<$a>>’
:cellmark
$z=$mass[x]

*nl ARRCOMP(x,’$mass’,’(.*)’)
*nl ARRPoS(x,’$mass’,’<<$z>>’)
if x<arrsize(’$mass’)+1: x+=1 & jump ‘cellmark’

За комбинирование посмотрел бы. Хотя полагаю, ты имеешь ввиду конструкции, которые использовал в своем движке.

Иван1901111 #2538 20.05.2021 17:35 (4 years ago)

Доброго времени суток! Подскажите, пожалуйста, как сделать что бы, когда ГГ взаимодействует с другими персонажами, то у них менялась статистика? При разговоре, например, повышалось доверие к ГГ? И когда доверие достигает определенного значение, то открывалась возможность новых действий? Заранее, благодарю!

Иван1901111:

Доброго времени суток! Подскажите, пожалуйста, как сделать что бы, когда ГГ взаимодействует с другими персонажами, то у них менялась статистика? При разговоре, например, повышалось доверие к ГГ? И когда доверие достигает определенного значение, то открывалась возможность новых действий? Заранее, благодарю!

Приветствую. Для начала советую просмотреть все уроки по QSP и написать хоть один квест прежде, чем браться за такой непростой момент как NPC.
Тогда, понимая структуру кода, вы поймете возможность использования базовых действий для смени флагов, провести исчисление реакции и рендерить их в текстовом формате.
С уважением,
HronoStranger

По поводу получения текстовых индексов, пример реализации:

Spoiler
#регистрация_индекса
! добавляем текстовые индексы в массив с названием оригинального массива + "_индексы"
! для текстовых массивов
if INSTR(0,$args[0],'$')>0:
	dynamic "
	<<$args[0]>>['<<$args[1]>>'] = '<<$args[2]>>'
	<<$args[0]>>_индексы[ARRSIZE('<<$args[0]>>')-1] = '<<$args[1]>>'
	"
! для числовых массивов
else
	dynamic "
	<<$args[0]>>['<<$args[1]>>'] = <<args[2]>>
	$<<$args[0]>>_индексы[ARRSIZE('<<$args[0]>>')-1] = '<<$args[1]>>'
	"
end if


#получить_текст_индекса
dynamic "$result = $<<$args[0]>>_индексы[<<args[1]>>]"


#удалить_элемент
dynamic '
killvar "<<$args[0]>>", ARRPOS(0,"$<<$args[0]>>_индексы","<<$args[1]>>")
killvar "<<$args[0]>>_индексы", ARRPOS(0,"$<<$args[0]>>_индексы","<<$args[1]>>")
'


#тест
! хотим добавить элемент в массив с сохранением расположения текстового индекса
gs 'регистрация_индекса', '$массив', 'индекс', 'значение'
gs 'регистрация_индекса', '$массив', 'индекс2', 'значение2'
! для числовых массивов
gs 'регистрация_индекса', 'массив2', 'индекс3', 8

! тест получения текста индекса:
msg $func('получить_текст_индекса','массив',0) &! по числовому индексу
msg $func('получить_текст_индекса','массив',ARRPOS(0,'$массив','значение2')) &! по значению
msg $func('получить_текст_индекса','массив2',ARRPOS(0,'массив2',8))

! тест удаления
gs 'удалить_элемент', 'массив', 'индекс'
msg $массив[0]
msg $массив_индексы[0]
Иван1901111 #2538 21.05.2021 04:47 (4 years ago)

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

Иван1901111,
Это по простому https://qsp.org/forum/comments/7079
Для продвинутого нужно использовать массивы и по индексу привязывать все параметры.


Здраствуйте, сделал время по гайду “Календарь по методу счёта Юлианских дней”, переместил его с основного окна в дополнительное описание убрав * перед NL. После каждого действия строка времени дублируется, как это исправить?

Aleks Versus Moderator 31.05.2021 14:00 (4 years ago)

emmanuel,
очищать окно доп описания перед тем, как выводить время, с помощью команды clear.

Работает, спасибо

Log in or Register to post comments.