RU 📌 Pinned

Как сделать?

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

bob:

ps:Выносливость = спорт * 2/3 + голод * 2/3
не то что мне нужно

мне нужно что бы выносливость не могла подняться выше саммарного значения (голод + спорт) и при это могла свободно опустится до нуля (к примеру гг. мешки с цементом грузит и печеньки при этом жрет голод не опускается а выносливость должна упасть до нуля)

Интересная задача.

Формула может быть такой:

stamina = ((golod + sport)*golod*sport)/(max_golod*max_sport)

Хорошо бы проверить только, чтобы числитель не вылез за допустимые пределы целых чисел.

Демонстрация:
http://jsfiddle.net/Nex_Otaku/Jj7b5/2/

спасибо большое за ответ.

я пробовал по твоемому и вышла какаято фигня в итоге я вывел (голод + спорт) в четвертую переменную

!голод
if голод <= 0 : смерть = 1 & gt ‘смерть’
if голод > 0 and голод <72:pl ‘<B><font color=red>Вы умираете с голода.</font></B>’
if голод >= 72 and голод <144:pl ‘<B><font color=red>Живот урчит, ноги трясуться, силы уходят, все мысли тлько о еде.</font></B>’
if голод >= 144 and голод <216:pl ‘<b>живот болит и урчит на всю улицу жрать просит.</b>’
if голод >= 216 and голод <288:pl ‘<font color=green>хочется жрать.</font>’
if голод >= 288 and голод <360:pl ‘<font color=green>вы сыты.</font>’
if голод >= 360: голод = 360

!спорт
if спорт <= 10 : спорт = 10
if спорт >= 10 and спорт <72:pl ‘<B><font color=red>спорт: мешок с костями.</font></B>’
if спорт >= 72 and спорт <144:pl ‘<B><font color=red> спорт: подвижная.</font></B>’
if спорт >= 144 and спорт <216:pl ‘<b>спорт: энергичная.</b>’
if спорт >= 216 and спорт <288:pl ‘<font color=green>спортивная.</font>’
if спорт >= 288 and спорт <360:pl ‘<font color=green>атлетичная.</font>’
if спорт >= 360: спорт = 360

м_выносливость = голод + спорт
if м_выносливост < 0:м_выносливост = 0

if выносливость < 0:выносливость = 0
if выносливость >= м_выносливость : выносливость = м_выносливость
pl ‘выносливость:<<выносливость>>’

и все получилось простите меня дурака.

Помогите.. Ну ни как не хочет эта конструкция работать.. что не так-то?

if Час>19 and Час<=7 : & pl '<<$Неделя>> <<День>>/<<$Месяц>>/<<Год>> <<Час>>:<<$nilmin>><<Минут>> <img src="others/moon.gif">'
if Час>7 and Час<=19 : & pl '<<$Неделя>> <<День>>/<<$Месяц>>/<<Год>> <<Час>>:<<$nilmin>><<Минут>> <img src="others/sun.gif">'
end

Это вывод времени. Хочется сделать что-бы иконка менялась в зависимости от игрового времени. День работает, как доходит до ночи вся строка просто исчезает. И так и эдак уже..

aska,
1. Не используй однострочную форму IF, всегда используй многострочную. См. Грабли, второе сообщение в теме.

2. Никаких знаков “&” в нормальном коде быть не должно. Каждый новый оператор должен начинаться с новой строки. Соединение операторов может быть использовано только в исключительных случаях, когда без этого нельзя обойтись.

3. Правильный код:

IF (Час > 19) OR (Час <= 7):
    PL '<<$Неделя>> <<День>>/<<$Месяц>>/<<Год>> <<Час>>:<<$nilmin>><<Минут>> <img src="others/moon.gif">'
ELSE
    PL '<<$Неделя>> <<День>>/<<$Месяц>>/<<Год>> <<Час>>:<<$nilmin>><<Минут>> <img src="others/sun.gif">'
END

Ура работает, спасибо :3

Еще вопрос. Получилась у меня такая система..

vitality=vitality+70 &!В начале игры задаю виталити 70/100

pl 'Бодрость: <<vitality>>/100' &!Вывод виталити
pl 'Внимательность: <<observ>>/25' &!Вывод внимательности

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

if observ<25:
observ=observ+1
end

if vitality<=100 and vitality>0:
vitality=vitality-1
end

Но все эти лишние проверки мне не очень нравятся.
Тем более, что с ними уже видны проблемы.

Например, при значении виталити меньше 50/100 персонаж получает штраф к внимательности.

if vitality<=50 and vitality>0 and observ>0:
observ=observ-5
end

А если внимательность была на тот момент например 3, то в итоге получается внимательность -2/25

Можно как-то изначально задать рамки для этих параметров, что-бы больше их не касаться и не происходило таких косяков?

В принципе, проблема решилась добавлением проверки

if observ<0:
observ=0
end

Но как-то все это…

Обычно эта проблема решается кодом

if observ<0: observ=0 
if observ>25: observ=25

if vitality>100: vitality = 100
if vitality<0: vitality = 0

Вопрос только куда его вставить: можно завести отдельную локацию и вызывать после каждого изменения параметра через gs ‘check_rules’, а можно в локации-обработчике onnewloc. Поведение несколько отличается - нужно выбрать более подходящее.

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

Еще вопрос. :3

В игре у меня сейчас есть дорога, есть лес. Можно между ними перемещаться. На дороге иногда лежит яблоко. Можно подбирать яблоко, осматривать, есть, выбрасывать. Из яблока может вылезать червяк. Яблоко может быть вкусным и питательным. А может и наоборот. Есть две сервисные локации. Для времени и для характеристик.

И вот по сути на две ‘физические’ локации - дорога и лес, на которых все происходит, у меня получились отдельные локации - ‘поднять яблоко’, ‘выбросить яблоко’, ‘червяк’ и тд. Уже сейчас выглядит сложновато. А когда я представляю себе, что в игре будет МНОГО контента, мне это вообще перестает нравиться.

Я иду по сложному пути, и нужно как-то упразднять лишние локации? Например, как-то генерировать локации ‘операции с яблоком’ внутри локаций типа ‘леса’? Или делать все квесты во внешних модулях, и подключать их по мере надобности? Вроде бы так можно? Но что-то боюсь в это пока лезть.. Или есть еще путь, что-бы все упростить?

Почему не работает возврат на предыдущую локацию?

В начале игры

$onnewloc = 'onnewloc'

Если персонаж засыпает, он перемещается на локацию ‘сон’

if sleep<1:
goto 'Сон'
end

В локации ‘onnewloc’

if $curloc <> $nextLoc:
$prevLoc = $nextLoc
$nextLoc = $curloc
end

В локации ‘сон’ на акте.

goto $prevLoc

Что не так-то?..

Кстати, если из локации ‘сон’ вызвать через gosub сервисную локацию, которая пытается отправить игрока на локацию ‘сон’ происходит краш плеера. Это нормально? :3

Блин я тупая фигня. Проблема решилась оче просто, добавлением в локацию сон ‘восстановления сна’.

sleep=sleep+48
Edited at 10.07.2014 10:26 (11 years ago)

Буду считать, что вопрос со сном решился.

aska:

Я иду по сложному пути, и нужно как-то упразднять лишние локации? Например, как-то генерировать локации ‘операции с яблоком’ внутри локаций типа ‘леса’? Или делать все квесты во внешних модулях, и подключать их по мере надобности? Вроде бы так можно? Но что-то боюсь в это пока лезть.. Или есть еще путь, что-бы все упростить?

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

aska видимо использует локацию-счётчик для перехода на локацию “сон”. Соответственно всё зацикливалось.

Локация-счётчик не должна использоваться для таких вещей, так же как и реалтайма не должно быть в текстовой игре.

Что касается работы с предметами, вопросов организации локаций и т.п., как правило каждый автор разрабатывает для себя собственную систему. Это происходит естественным путём. По мере создания игр от простых к сложным, автор вырабатывает собственные приёмы и стиль геймплея.

Как самому это сделать? Нужно первую игру сделать с минимумом сложных вещей. Использовать только самые простые, понятные, доступные приёмы. Сделать очень простую игру. Все базовые вещи описаны в учебнике. Их вполне достаточно для написания интересной игры.

Усложнить игру хочется всегда. Если для первой игры от этого удержаться, и сделать её до конца, то к началу следующей будет уже больший запас опыта, можно делать сложнее. И так далее с набором опыта и знаний. Если делать сразу сложную или масштабную игру, она будет не по силам и разработка зайдёт в тупик.

Nex Ну почти. Переход в локацию сон происходил с локации ‘качества’, где я стараюсь держать максимум всего связанного с характеристиками и всяким таким. А при попытке выйти из локации сон опять срабатывало условие, что сон<1 и все шло по кругу да.

Log in or Register to post comments.