Как сделать?

Re: Как сделать?

http://qsp.su/components/com_agora/img/members/2560/mini_Screenshot_1.png
Здраствуйте, сделал время по гайду "Календарь по методу счёта Юлианских дней", переместил его с основного окна в дополнительное описание убрав * перед NL. После каждого действия строка времени дублируется, как это исправить?

emmanuel
useravatar
Offline
2 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

emmanuel,
очищать окно доп описания перед тем, как выводить время, с помощью команды clear.

Aleks Versus
воздвигатель башни
useravatar
Offline
1604 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Работает, спасибо

emmanuel
useravatar
Offline
2 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Вопрос такой заинтересовал
Вот есть DYNEVAL и FUNC
FUNC вызывает локацию для обработки с возвратом результата, а DYNEVAL вызывает переменную с возвратом результата
Но вот не могу понять, когда стоит вызывать ту или иную функцию?

Torgald
useravatar
Offline
2 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Torgald,
если нет прямой необходимости использовать dyneval - используй func.

Aleks Versus
воздвигатель башни
useravatar
Offline
1604 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Torgald,
Может это не интересно, но поделюсь своим опытом.
FUNC

 Спойлер Show Spoiler Hide Spoiler
 
Есть довольно плохой (на мое мнение) метод с использованием локации в качестве шаблона. Удобно, тогда можно обработать два-три десятка строк, провести все сопоставления, скомпоновать переменные... в таком случае можно использовать FUNC.
Вообще, можно использовать и GOSUB, но если тебе нужно вернуть значение для дальнейших вычислений, то FUNC незаменим.


К примеру, если мы хотим сгенерировать 24 пингвинов через цикл.
Мы их генерируем и возвращаем счетчик циклов.
Далее, мы можем вернувшееся значение поделить на три.
И сгенерировать в три раза меньше северных медведей.

Удобство в том, что можно поручить игроку ввод количества пингвидей, а код уже сам всё высчитает.

Таким образом, FUNC хороша при дополнительном исчислении.
Ваш покорный слуга, правда, использует его вместо GS, это плохой тон, но в целом, можно использовать и так.
Про DYNEVAL не скажу. Он отлично принимает формулы в текстовом виде, но лично для себя не нашел применения, эта функция обходит меня стороной..

Вообще, советую перейти в дискорд. Там быстро и более оживленно отвечают на вопросы.

HronoStranger
Странник
useravatar
Offline
31 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Если исполняемый код меняется от аргументов, используй DYNEVAL. Если исполняемый код статичный и всегда отрабатывает одинаково, проще использовать FUNC.
DYNEVAL необходим только для обработки динамического кода. Например, если нужно присвоить переменной результат динамического вычисления.

Пример задачи: функция должна получить название переменной, взять из нее значение и обработать, а саму переменную очистить.
В данном случае FUNC не поможет, так как название переменной динамическое, соответственно исполняемый код изменится. DYNAMIC также не поможет если записывать значение переменной в локальный аргумент ARGS, так как DYNAMIC использует свои личные аргументы ARGS. Необходим DYNEVAL.

Код:


переменная = 50
gs "тест", "переменная"

#тест
! получаем значение, args[1] становится =50
args[1] = dyneval("result = <<$args[0]>>")
! обрабатываем как угодно, это лишь пример
$какой-то_важный_массив[args[1]] = "значение обработано"
! чистим переменную
killvar $args[0]

! (dynamic "args[1] = <<$args[0]>>") в данном случае не отработает, потому что dynamic запишет СВОЙ аргумент args[1], а не аргумент локации, в которой он был вызван.

Engineer
useravatar
Offline
36 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Спасибо за ответы)

Torgald
useravatar
Offline
2 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Здравствуйте, прошелся по учебнику для новичков в разработке текстовых игр. Там был пример создания и запоминания имени(в том случае планеты). По такому же принципу можно ведь сделать ввод имени гг. Но как сделать так что бы после ввода действие ввода имени пропало?

Loner
useravatar
Offline
3 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Loner,

Код:

if $name='':

   act "Как вас зовут?":
      $tname=$input("Укажите имя:")
      ! тут можно встроить проверку, что ввёл игрок
      $name=$tname
      goto $curloc
   end
end

Aleks Versus
воздвигатель башни
useravatar
Offline
1604 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
1003
Всего опросов:
14
Всего сообщений:
16790875
Бездействующий:
Пользователи форума:
 
Всего пользователей:
2555
Последним зарегистрировался:
John