RU 📌 Pinned

Как сделать?

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

Например. Если переменная от 25 до 100, то будет переход на локацию (другое действие), а если больше 100 или меньше 25, то ничего не будет.
Как так код написать?
Я новичок. Только вчера начал заниматься этим кодописаньем.

ANBUMonblan,

IF (деньги >= 25) AND (деньги <= 100):
    GOTO 'Харчевня'
END

Большое спасибо!

А можно так?
IF (Деньги>= 25) AND (Деньги<= 100) AND (Опыт = 100):
GOTO ‘Харчевня’
END

Еще.
Подошел вор и обокрал вас. Как сделать что бы переменная Деньги изменилась рандомно.

ANBUMonblan,

! отнимаем от 10 до 50 монет
деньги = деньги - RAND(10, 50)

Подскажите пожалуйста, где у меня в коде ошибка, при значении переменой money больше 20000 условие для серебряных тупо не срабатывает.

Spoiler
золотой=money/10000
серебряный=money/100
if серебряный>=100:
сер_раз=серебряный-100
серебряный=0+сер_раз
end
медяк=money-(золотой*10000+серебряный*100)
if медяк>=100: 
мед_раз=медяк-100
медяк=0+мед_раз
end

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

Я специально под этот код создал отдельный файл. Там по сути ничего кроме него и кнопки прибавления к переменой money нету.

Mxat2008,
выкладывай этот отдельный файл.

Mxat2008,
как я и предполагал, ошибка в другом месте. Ты неправильно используешь ONNEWLOC.

Ошибка заключается в том, что твой код строится на предположении, что ONNEWLOC выполнится раньше, чем код на локации “111”.

А на самом деле, код выполняется так:
1. В действии увеличивается переменная “money”.
2. Выполняется код локации “111” - выводится новое значение “money” и старые значения для остальных переменных.
3. Выполняется перерасчёт значений прочих переменных в ONNEWLOC, но новые значения уже не выводятся.

Подробно порядок выполнения кода описан здесь: Порядок работы интерпретатора.

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

Сам перерасчёт вызывать следует либо сразу после изменения переменной “money”, либо прямо перед выводом значений на экран. Если в игре для прохождения имеет значение количество золотых, серебряных, медных монет, а не только общее количество денег, то выбери первый вариант. Если же разбивка монет по достоинству выполняется только для вывода информации игроку, то можно использовать второй вариант.

Nex,
То есть, при таком порядке выполнения кода будут выводиться старые значения переменых. Но почему тогда, у меня не правильно начинают просчитываться значения после порога в 20000? Или я чето не понимаю?) Просто, я начал изучать все это пару дней назад.

Mxat2008,
тебе кажется, что они считаются неправильно, т.к. ты видишь новое значение “money” и старые значения остальных переменных. Одно другому не соответствует, т.к. ты вывел их на экран раньше, чем пересчитал.

Nex,
Это понятно, что значения будут не соответствовать друг другу, но у меня при значении переменной money>=20000 переменная золотой выводиться правильно, серебреная=0, а медяк рассчитывается исходя из того что серебреная равна 0, т.е. неправильно. Но ведь, если переменная money меньше 20000, то код работает правильно. Вот я и не понимаю, что происходит при достижении этого магического числа 20000. Может это что то настолько очевидное, но я к сожалению этого не вижу((( И спасибо, что пытаешься помочь мне.)

Log in or Register to post comments.