RU 📌 Pinned

Как сделать?

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

Aleks Versus Moderator 08.08.2018 05:41 (7 years ago)

Ways,
насколько я знаю, специальной команды нет. Действия выделяются не конкретным выбором (в отличие от предметов), а наведением мыши. Правда можно использовать костыль:

$actlist = $curacts
cla
dynamic $actlist

Теоретически этот код можно засунуть на локацию-счётчик, и тогда выделение будет сниматься автоматически, пока игрок не пошевелит мышкой. Практически это скорее всего приведёт к массе глюков.

Как работают проценты в QSP? Один уже задавал ему этот вопрос, но ему так и не ответили.
То есть мне надо, чтобы переменная была увеличена/увеличена на n%. Простое n=+10% не работает - ошибка “Неизвестное действие”. Как это делается правильно?

Спасибо. А в настройках никак не исправляется?

Aleks Versus Moderator 08.08.2018 17:12 (7 years ago)

RomaDova,
всё просто:

N+=N*10/100

Вместо числа 10 подставляешь нужное число процентов. Само собой нужно учитывать, что QSP работает только с целыми числами, поэтому один процент от единицы ты к единице не прибавишь.
Ways,
Эм… в настройках чего? И что там должно исправляться? То, что выделение действий происходит таким образом, — это, так сказать, особенность плеера. Нужно копать код плеера, чтобы это изменить.

Aleks Versus:

всё просто:
Код:

N+=N*10/100

Вместо числа 10 подставляешь нужное число процентов.

Примерно так и пришлось сделать. Спросил, надеясь сократить число символов в коде, но видимо это просто невозможно.
Но спасибо за помощь

Есть ли тут знатоки Навигатора? Требуется ваша помощь.

Можно ли выполнять в нём запросы к JS?
Можно ли заставить js-функцию возвращать нужное значение так, чтобы QSP его принял?

Aleks Versus Moderator 10.08.2018 15:21 (7 years ago)

NickoAilus,
запросы к JS можно.

EXEC('JS:код java-script')

А вот в обратную сторону — нет. Посмотри на вот этот плеер https://qsp.org/forum/951-pleer-qsp-s-podderzkoj-webm

Aleks Versus,

QQSP я уже давно использую, спасибо. Дело в том, что и там нет интересующей меня функции. Точнее, она есть, но нигде не объясняется, как её использовать.

Благодарю за помощь. :)

Здравствуйте. Не судите строго. Просто заскок в тексте игры есть.Перед обращением на форум, я сам ковырялся в синтаксисе. Спасибо Версусу, что сотворил уроки по такой проге.

Я делаю пародию на ферму. В магазине фермер покупает животных.
Математика такая: в рамдоме есть раса-вид животного, его ПОЛ.
С некоторой вероятностью (ver), которое задается рамдомно от 20 до 100% в магазине появляется список покупок.
Проблем много.
1. Прога должна выбрать по условию равенства переменной ver, но она идёт сразу в конец и в гендере пишет МУЖ, хотя по значению надо писать ЖЕН или ДЕТИ.
2. Я сделал ограничение по деньгам, но у меня программа не прерывает покупки выражением “закончились деньги”
3. Момент есть 1: где можно всунуть команду для очистки экрана?
4. Есть магазин, локация- загон для животных-мальчиков, загон для животных-девочек.
Вопрос: как в коде магазина сделать запись, которая делает после покупки животных запись в соответствующем вольере?
Вот текст:
$Trace=‘’
$Tgen=‘’
$race[0]=‘собака’
$race[1]=‘кошка’
$gender[0]=‘жен’
$gender[1]=‘дети’
$gender[2]=‘муж’

*pl’<table border=1>
<tr>
<th>Расса</th>
<th>Пол</th>
<th>Цена</th>
<th>Контроль</th>
</tr>’
ver=rand(20,100)
*pl”Вероятность “+ver
i=rand(0,1)
$race[]=$race[i]$Trace=$race[]
if ver=rand(61,100):
i=rand(0,1)
$Trace=$race[i]*pl”Вероятность ДЕТИ “+ver
$Tgen=$gender[1]
price=rand(50,80)
Tprice=price
*pl’<tr>
<td><<$Trace>></td>
<td><<$Tgen>></td>
<td><<Tprice>></td>
<td><a href=“exec:gs’’магазин’’,’’buy’’”>Купить</a></td>
</tr>’
elseif ver=rand(41,60):
i=rand(0,1)
$Trace=$race[i]*pl”Вероятность девочек “+ver
$Tgen=$gender[0]
price=rand(50,80)
Tprice=price
*pl’<tr>
<td><<$Trace>></td>
<td><<$Tgen>></td>
<td><<Tprice>></td>
<td><a href=“exec:gs’’магазин’’,’’buy’’”>Купить</a></td>
</tr>’
end
else
i=rand(0,1)
$Trace=$race[i]*pl”Вероятность мальчиков “+ver
$Tgen=$gender[2]
price=rand(85,100)
Tprice=price
*pl’<tr>
<td><<$race[]>></td>
<td><<$Tgen>></td>
<td><<Tprice>></td>
<td><a href=“exec:gs’’магазин’’,’’buy’’”>Купить</a></td>
</tr>’
end
end
if $ARGS[0]=“buy”:
money=money-Tprice
*pl”Остаток= “+money
end
elseif money<=0: *pl”у вас нет денег”
end
if money<=0:
money=0
*pl”у вас нет денег”
end

Poganec37:

1. Прога должна выбрать по условию равенства переменной ver, но она идёт сразу в конец и в гендере пишет МУЖ, хотя по значению надо писать ЖЕН или ДЕТИ.

У тебя проверка случайного числа ver с другим случайным числом.

...
ver=rand(20,100)
...
if ver=rand(61,100):
...

Шанс совпадения двух случайных чисел в таком случае, если я не ошибаюсь, чуть больше одного процента. Первые два события будут происходить, считай, никогда. Поэтому подключается последнее условие (иначе: МУЖ).
Должно быть:

...
if ver>=61:
...
elseif ver>=41 and ver<=60:
...

Спасибо, сработало. Есть ещё 1 косяк, который я не понимаю.
Когда я вошел на магазин - высвечивается товар с ценой и действием КУПИТЬ.
действие КУПИТЬ должна работать так: вот я зашел на локацию магазина- висит товар. купил- деньги вычитаются из общей суммы.
А в реале код программы выполняет следующее: вот игрок зашел на локацию магазина- висит товар. Если выполнить КУПИТЬ, то высвечивается товар следующий и цена этого товара вычитается из общей суммы.
А тот товар, который при входе был- вообще не учитывается.
Можно ли это исправить? я не вижу чем.
Сработало-то срадотало. Но первый товар также не учитывается. не понимаю, как исправить. Фишка с переносом на верх не работает.

При обновлении локации весь ее код выполняется снова.
Соответственно Tprice меняется на новый перед покупкой.
Нужно поднять блок с аргументом args[0]=“buy” на самый верх. Тогда будет вычитаться старая цена.

Но если товаров несколько, то это не поможет. В коде локации переменная Tprice перезаписывается столько раз, сколько товаров, и всегда равна цене последнего товара. Какой бы товар не брал, всегда вычитается стоимость последнего.

Engineer,
1. Мне надо, чтобы после покупки в магазине в локации с клетками животных тоже строилась таблица. Купил-добавилось.
Надо-ли на локации с клетками строить таблицу, а в магазине мягко обращаться к локации через gs”клетка1”,”table”
Или есть что-то простое?
2. если я подниму на верх args[0]=“buy, то из ДЕНЕГ вычтется 0. Мне не очень понятно как исправить действие проги так, чтобы она самый первый товар тоже вычитала.

Engineer,
В первом цикле программы прога не видит товар. Я во всех циклах поставил выражение: ДЕНЬГИ- ЦЕНА ТОВАРА
Теперь у меня такая ситуация: после входа в магазин отображается все деньги, но не заданное началом число, а уже с вычетом товара, который отображается в магазине.
Т.е. у меня было 1000 денег, отображается товар в 80 рублей. Отображается 920 денег и если я нажму КУПИТЬ- прога продолжит генерировать товар.
Первый товар в списке не учитываетсяvoprosnik.txt

Деньги вычитаются в блоке args[0]=“buy”, не важно куда его сунуть. Пока аргумент не равен “buy”, вычитание не происходит.
И зачем в каждой проверке делать вычет? Он будет происходить каждый раз когда товар прогружается!

Откровенно говоря, код непотребный и полон ошибок.
Если трудно, лучше его упростить и разбить на отдельные локации для наглядности. Сделать основную локацию магазин; локацию-обработчик для генерации и запоминания товара; локацию с обработками - проверка, покупка, вычет, обновление товара и т.д.
Товар можно хранить в массиве, выводить в магазине элементы этого массива, при покупке передавать информацию в локацию с обработками.
Можно начать с еще более простого - сделать все актами и использовать обычные переменные.

На данный момент вся локация “магазин” это одна большая ошибка. Потому что все в одной куче набросано:
- код под аргументом выполняется вместе с основным после него;
- переменная вычитаемой цены одна и постоянно перезаписывается без участия игрока;
- деньги вычитаются сразу как товар появляется на прилавке;
- проверка на наличие денег происходит уже после покупки и получения товара;
и т.д.

Log in or Register to post comments.