Как сделать?
…
Ways,
насколько я знаю, специальной команды нет. Действия выделяются не конкретным выбором (в отличие от предметов), а наведением мыши. Правда можно использовать костыль:
$actlist = $curacts
cla
dynamic $actlist
Теоретически этот код можно засунуть на локацию-счётчик, и тогда выделение будет сниматься автоматически, пока игрок не пошевелит мышкой. Практически это скорее всего приведёт к массе глюков.
Как работают проценты в QSP? Один уже задавал ему этот вопрос, но ему так и не ответили.
То есть мне надо, чтобы переменная была увеличена/увеличена на n%. Простое n=+10% не работает - ошибка “Неизвестное действие”. Как это делается правильно?
Спасибо. А в настройках никак не исправляется?
RomaDova,
всё просто:
N+=N*10/100
Вместо числа 10 подставляешь нужное число процентов. Само собой нужно учитывать, что QSP работает только с целыми числами, поэтому один процент от единицы ты к единице не прибавишь.
Ways,
Эм… в настройках чего? И что там должно исправляться? То, что выделение действий происходит таким образом, — это, так сказать, особенность плеера. Нужно копать код плеера, чтобы это изменить.
Aleks Versus:
всё просто:
Код:N+=N*10/100
Вместо числа 10 подставляешь нужное число процентов.
Примерно так и пришлось сделать. Спросил, надеясь сократить число символов в коде, но видимо это просто невозможно.
Но спасибо за помощь
Есть ли тут знатоки Навигатора? Требуется ваша помощь.
Можно ли выполнять в нём запросы к JS?
Можно ли заставить js-функцию возвращать нужное значение так, чтобы QSP его принял?
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”, вычитание не происходит.
И зачем в каждой проверке делать вычет? Он будет происходить каждый раз когда товар прогружается!
Откровенно говоря, код непотребный и полон ошибок.
Если трудно, лучше его упростить и разбить на отдельные локации для наглядности. Сделать основную локацию магазин; локацию-обработчик для генерации и запоминания товара; локацию с обработками - проверка, покупка, вычет, обновление товара и т.д.
Товар можно хранить в массиве, выводить в магазине элементы этого массива, при покупке передавать информацию в локацию с обработками.
Можно начать с еще более простого - сделать все актами и использовать обычные переменные.
На данный момент вся локация “магазин” это одна большая ошибка. Потому что все в одной куче набросано:
- код под аргументом выполняется вместе с основным после него;
- переменная вычитаемой цены одна и постоянно перезаписывается без участия игрока;
- деньги вычитаются сразу как товар появляется на прилавке;
- проверка на наличие денег происходит уже после покупки и получения товара;
и т.д.