RU 📌 Pinned

Как сделать?

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

De@th K!d,

if text!1 and text!2 and text!3:gt'loc4'

должно сработать, если нет то

if text!1:gt'loc4'
if text!2:gt'loc4'
if text!3:gt'loc4'

Конечно, свой текст и свою локацию, мне лень язык было переключать).

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

if $text!'1'

и т.д.
Не знаю как строка ввода, а input выдает ошибку при попытке присвоить числовой переменной текстовое значение.

Григорий Лебедев #2234 29.12.2019 18:44 (6 years ago)

De@th K!d:

Спасибо за более ранние ответы)) …хоть и не получилось то, чего хотел, поэтому решил вернуться ко вводу текста)
Следующий вопрос по идее простой, но разобраться не получилось. Имеем, допустим, такой вот код:

IF Текст = 1:
GOTO 'Локация-1'
END

IF Текст = 2:
GOTO 'Локация-2'
END

IF Текст = 3:
GOTO 'Локация-3'
END

Как сделать так, чтобы при вводе любого значения переменной “Текст”, не равной 1, 2 или 3, игра переводила на “Локацию-4”? Я пробовал использовать “!” и “<>”, однако почему-то каждый раз выдаёт ошибку синтаксиса :/

Можно просто сделать так:

IF Текст = 1:
GOTO 'Локация-1'
END

IF Текст = 2:
GOTO 'Локация-2'
END

IF Текст = 3:
GOTO 'Локация-3'
END

GOTO 'Локация-4'

Получается, что если текст не равен 1/2/3, то кусп читает строку перехода на локацию-4. Если равен, то когда происходит переход на другую локацию, любой код ниже благополучно отбрасывается. Решение простое, но со вкусом.

Григорий Лебедев #2234 29.12.2019 18:46 (6 years ago)

Быстрый вопрос. Как сделать так, что при нажатии гиперссылки в тексте выполнялся какой-либо код? Я помню, что так можно сделать, но не помню как.

7H3_D31M0S,

<a href="exec:код">текст</a>

Если код многострочный то используйте dynamic.

Григорий Лебедев #2234 30.12.2019 07:11 (6 years ago)

dmvikar,
Я иногда видел в кодах игр этот “dynamic”, только вот не понимаю, как он работает и с чем его едят. Можете объяснить, пожалуйста?

7H3_D31M0S,
В текстовую переменную записываешь код

$text={
код
}

а где нужно его использовать

dynamic $text

По сути, это как использовать gs
http://wiki.qsp.su/help:dynamical

Aleks Versus Moderator 01.01.2020 07:44 (6 years ago)

7H3_D31M0S,
и вновь предлагаю своё видео по dynamic https://www.youtube.com/watch?v=nUzEUgm1JlM

7H3_D31M0S,
Ну такое, если честно. Лучше так сделать, меньше нагрузка на ПК и код читабельнее:

if (Текст = 1):
	gt 'Локация-1'
elseif (Текст = 2):
	gt 'Локация-2'
elseif (Текст = 3):
	gt 'Локация-3'
else
	gt 'Локация-4'
end

Приветствую форумчан.
Балуюсь тут с рандомом, делаю генератор рандомных неписей в котором генерятся имя-фамилия-фото. На самого непися можно полюбоваться на отдельной локе, к которой подключен рандом. Для того чтобы он не пропал при следущей рандомизации ввел переменную, которая вырубает рандом если уже некто сгенерен. И все бы хорошо, одного-единственного сгенерить таким образом дело нетрудное, а вот как быть с несколькими? Как сделать так, чтобы не забылся первый? Может тут и просто, но чёт я никак сообразить не могу =) Нужна примерная схема для реализации подобного

greymatter,
Сделай для нпс id и все переменные, характеризующие нпс именуй типа переменная[id]. Инициализируй id в стартовой локе, id=0.

!тут код, запускающий генерацию

name=rand(0,100)
$name_npc[id]=$name[name]

!для кода выше должен быть создан массив с именами, типа $name[0]='Федор' $name[1]='Анна'

age[id]=rand(15,50)
...
!в конце генерации меняем id, чтоб не перезаписывались неписи
id+=1

Надеюсь я правильно вопрос понял.
На мой пример генерации имен можешь не обращать внимания, это для более понятности сути. Главное инициализируй id, там где он больше никогда не всплывет и меняй его в коде, для создания нового НПС

А ларчик-то просто открывался! Спасибо.

greymatter,
Собственно да, всё просто.

Инициализируешь имена:

$__name[] = 'Антон'
$__name[] = 'Денис'
$__name[] = 'Игорь'
$__name[] = 'Владислав'
$__name[] = 'Андрей'
$__name[] = 'Алексей'
$__name[] = 'Пётр'

Генерируешь NPC:

amount_npc = args[0]

index = 0
:init_array
	$npc_Name[index] = $__name[rand(0, arrsize("$__name")-1)]
	npc_Age[index] = rand(18, 36)
	
	index += 1
if (index < amount_NPC): jump 'init_array'

Выводишь их, дабы проверить корректность алгоритма:

index = 0
:render_npc_list
	*PL '<<$npc_Name[index]>> | <<npc_Age[index]>>'
	
	index += 1
if (index < arrsize('$npc_Name')): jump 'render_npc_list'

Oliver,

*PL '<<$npc_Name[index]>> | <<npc_Age[index]>>'

Тут как-то странно выходит, по сути же обновляется одна строка, как тут список получить? А если индекс в выводе менять, то кроме [0] ничего не выводится. Только что проверил

greymatter,
Пожалуйста. Так же, чутка подредактировал алгоритм - теперь не будет повторяющихся имён, как и пустых ячеек массива.
npc_gen.qsp

Oliver,
Тут рандом не запоминается :) Нужно чтоб при определенных условиях сгенеренный оставался таким каким его сгенерил компьютерный бог. Но при этом генерились новые персы, которые, если к ним обратиться, добавятся во френд-лист. Соответственно не поменяются во френд-листе. Вова не станет Катей и так далее потому что переменная $npc_name поменяла свое значение. Вчера наковырял худо бедно работающее запоминание на основе кода dmvikar, попробую и сюда прикрутить

Log in or Register to post comments.