Как сделать?
…
oleksandrigo,
функцией называется процедура, которая возвращает результат.
То есть можно в отдельной локации сделать часть кода, а потом с другой локации загрузить значение? А что если значений несколько?
И я никак не могу понять в чем разница между ним и gs. В каких ситуациях он нужен?
oleksandrigo,
Spoiler
локация “proced”:
v=20
b=5
z=v*b
Чтобы получить значение z можно запустить через gosub:
gosub 'proced'
А можно изменить локацию так:
v=20
b=5
result=v*b
Теперь, чтобы то же самое значение записать в z, используем func:
z = func('proced')
Более того, теперь мы это значение можем поместить не только в z, но и в f, g, и h.
z = func('proced')
f = func('proced')
g = func('proced')
h = func('proced')
Более того, если мы воспользуемся аргументами, мы можем задействовать не только числа 5 и 20:
v=args[0]
b=args[1]
result=v*b
f = func('proced',5,20)
! f = 100
g = func('proced',3,6)
! g = 18
h = func('proced',34,1)
! h = 34
Более того, переменные v и b тоже можно исключить:
result=args[0]*args[1]
f = func('proced',5,20)
! f = 100
g = func('proced',3,6)
! g = 18
h = func('proced',34,1)
! h = 34
Возникла проблема…
Обычно в QSP текст выводится начиная с верхней левой части экрана. Как сделать так, чтобы текст выводился с нижней левой части экрана?
Spoiler
Я пробовал так:
'<table height="100%" valign="bottom"><tr height="100%" valign="bottom"><td height="100%" valign="bottom">Просто текст</td></tr></table>'
В теории должно было сработать.
NickoAilus,
относительная высота не сработает в классическом плеере.
Просто забивай несколько пустых строк перед теми, которые должны быть внизу.
Spoiler
*pl "<<$args[0]>>"
*pl $args[0]
Чем отличаются эти две команды?
Просто показывает обе, но вот в почему не пойму.
oleksandrigo,
результат их работы идентичен. А вот работают они по-разному.
Когда плеер встречает первую команду, он видит подвыражение в строке. Сначала он получает значение $args[0] и подставляет его вместо подвыражения. Таким образом теперь у него получается текстовая константа. Он берёт её значение и передаёт оператору *pl. Оператор выводит значение на экран.
Когда плеер встречает вторую команду, он сразу берёт значение $args[0] и передаёт оператору *pl.
Первая команда — двойная работа для плеера. Ну это условно. Она выполняется где-то в 1,3 раза дольше.
В общем такая ситуация: есть локации:
1) локация “1” из которой меня кидает в бой, а точнее в локацию “Fight”
2) локация “Fight” в которой всякие проверки и тд, но в итоге меня gt’ешит в локацию “FightA”
3) локация “FightA” которая при выборе действия xgt’шит сама себя.
И вот какая проблема. Я пытаюсь сделать так, чтобы та же локация 1 могла быть даже локацией 2, но при победе меня должно возвращать на локацию в которой меня кинуло на локацию “Fight”.
Сделал вот так и вроде норм.
В локацию Fight при условии что я выиграл сделал gt $loc, $metka
Правда нужно каждую локацию отмечать ими же. Тоесть писать
$loc = $curlock
$metka=args[0]
Вот так вот.
Вот такой вот есть вопрос…Как сделать доход в игре ?
То есть,мы имеем золото ($gld) и доход ($doh) и у нас есть действие получить деньги
Например всего золота у нас 4 штук, а доход составляет 5 золота в ход
Какой должен быть оператор ? Я ничего не могу придумать как $gld=$gld+$doh,но тогда у меня выходит не 9 как должно получится,а 45 !!
Кто знает как правильно ?
Антипапа,Нуу. у тебя ведь числа? Зачем ты ставишь $? Этот знак для строки(текст). Тоесть получится
gld = gld + doh
а еще можно написать
gld += doh
Та же самая команда, просто короче.
И еще раз повторю.
$ - для текста.
К примеру $x = ‘Дарова’
А переменные для чисел просто
x = 1
А у тебя получилось, что числа просто стали рядом друг с другом.
oleksandrigo,спасибо…Но все равно то же самое,числа ставлятся в ряд $gld += $doh
или gld += doh,но если так то тогда переменная $gld не меняется (у меня так она и называется)
Хотя уже все исправилось и заработало
Но у меня вопрос
Какая разница между названием переменной с $ и без $ ?
Антипапа,
внимательнее читай справку.
Знак $ ставится перед названием ТЕКСТОВОЙ переменной
’4’+’5’ — это конкатенация строк. Склейка. Ты склеил текст ’4’ и текст ’5’. Получилась строка ’45’, а не число, как тебе объяснил oleksandrigo.
Переменная $gld не меняется, потому что она текстовая. А переменная gld — числовая.
В общем такая проблема.
Хочу сделать шанс уворотов. То бишь чем больше переменная lovk тем больше шанс. Она должна зависеть и от ловкости врага.
Но никак не могу понять как это устроить.
Если просто rand(lovk) то шанс станет меньше.
Если rand (lovkM) ситуация та же.
!lovkM - ловкость врага
Если rand (lovk,lovkM)
То это вообще что-то не то. Ибо получится что если разница ловкостей большая то шанс меньше, а ведь ловкость у меня может быть больше чем у врага!
В общем суть вроде рассказал.
Пока использую вот это.
Spoiler
x = rand(1)
if lovk > lovkM*2 and x = 1:
$evade = 'Вы увернулись'
EvDa = 1
else
HP -= ODamagFM
$noEvade = 'У вас не получилось увернуться'
EvNet = 1
end
Но тут по сути шанс уворота 50%. И это плохо.
Spoiler
raznisa = lovk - lovkM
if raznisa < 0: raznisaM = raznisa * (-1)
if lovk > lovkM:
xr = rand(lovkM,lovk)
if xr >= lovkM and xr <= raznisa: x = 1
end
if lovkM > lovk:
xr = rand(lovk,lovkM)
if xr >= raznisaM and xr <= lovkM: x = 1
end
!!!!
if x = 1:
$evade = 'Вы увернулись'
EvDa = 1
else
HP -= ODamagFM
$noEvade = 'У вас не получилось увернуться'
EvNet = 1
end
Вот так вот сделал. Если кому нужно берите.