RSS
[>] Переходы-картинки
std.prog
kolobod(syscall,30) — All
2017-10-31 08:53:31


Нид хелп! Был, кажется, этот ответ в форуме, но я никак не могу найти его, после переноса ветки по STD2 в отдельную.
Нужно в STD2 сделать переходы в другие локации картинками.
Сначала сделал их отдельными объектами в комнате, просто назначив им в dsc

p (txtc ''..img('PIC/ЛОКАЦИЯ.png'));

и добавив в act

walk 'ЛОКАЦИЯ';

Все работало, жмешь на картинку - уходишь в нужную комнату. Но. Если описание локации большое, при проматывании, картинки локации "уходят" из видимости, вместе с верхним текстом. А надо - чтобы они были всегда оставались сверху, как в традиционном INSTEAD-квесте. То есть, надо картинки как-то вставить в

way = { 
	vroom('ЛОКАЦИЯ', 'loc_name')    
};

[>] Re: Переходы-картинки
std.prog
kolobod(syscall,30) — Peter
2017-10-31 11:03:46


ДА!!))
Но, тут же вылезла другая загвоздка. Между картинками вылезают стандартные текстовые разделители "|".
Реально ли их отключить как-то?

[>] Переходы-картинки
std.prog
kolobod(syscall,30) — All
2017-10-31 12:03:12


Ну вот например, есть такая фишка - убрать в диалогах цифры, заменив их на "-".
===
stead.phrase_prefix = '-';
===
А нет ли такой же: чтобы избавиться от разделителей путей "|"?

[>] Разделители
std.prog
kolobod(syscall,30) — All
2017-10-31 14:12:06


А, всё, дошло наконец - как можно их убрать))
===
game.gui = {
ways_delim = '';
}
===

[>] Рандом в СТИД 2
std.prog
kolobod(syscall,30) — All
2019-09-25 11:14:53


Всем огромный привет! Сразу приношу извинения, если вдруг пишу не в тот раздел. Давно не заходил, подзабыл что-как.
Вдруг кто еще помнит свои наработки по стид2?
Запнулся на таком моменте. Надо, что бы при срабатывании условия - в ответ РАНДОМНО включалось ОДНО из нескольких возможных событий.
Если конкретно: у меня игрок в какой-то момент делает персонажем действие, открывает найденным ключом дверь в бункер.
act = function(s)
      if got_bunker_key then 
                        bunker_door_open;        --дверь открывается, если есть нужный ключ
		        random_action_on = true; --включается "разрешение" для запуска 1 из 3 рандомных событий
                        p [[Из темного коридора раздается рычание. В воздухе витает какой-то мерзкий запах.]]; 						
end;
И есть три условия для запуска трех разных событий, одно из которых должно включится СЛУЧАЙНЫМ ОБРАЗОМ, после того как сработает random_action_on.
Это:
dead_attack --атака монстрами игрока
dead_blind --монстры не замечают, как игрок проник в бункер
poison_on --игрок получает отравление
Как сделать рандомный запуск одного из трех событий?

[>] Re: Рандом в СТИД 2
std.prog
kolobod(syscall,30) — Peter
2019-09-25 19:23:10


Всё запускается из act.
То есть мне надо сделать так, верно понял?
local n = rnd(3) --Этот блок прописывается просто в любом месте кода, или его надо вставлять куда-то конкретно? 
if n == 1 then dead_attack = true --срабатывает условие для запуска монстров
elseif n == 2 then dead_blind = true --срабатывает условие при котором монстры игрока не видят
elseif n == 3 then poison_on = true --срабатывает условие при котором персонаж получает отравление
else
end
act = function(s)
if got_bunker_key then
bunker_door_open = true; --дверь открывается, если есть нужный ключ
random_action_on = rnd(3); --включается "разрешение" для запуска 1 из 3 рандомных событий
end;



[>] Re: Рандом в СТИД 2
std.prog
kolobod(syscall,30) — Peter
2019-09-26 09:12:27


Супер! Похоже это вот именно то, что надо было!! Сегодня после работы сяду пробовать в деле)
Большущее спасибо.

[>] Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — All
2019-10-11 14:19:15


Ох, еще такой вопрос. Может знает кто? Заранее прошу прощения)
В общем, загнал я себя в ловушку. Забыл слова Петра о том, что dsc (в отличие от act) не предназначен для внесения каких-то глобальных изменений в игровой процесс, это только описательная часть. В итоге столкнулся с тем, что завязал часть игрового процесса на dsc все-таки. До какого-то момента все исправно работало. До тех пор, пока не понадобилось организовать "переход" в другую комнату нетрадиционным образом. Сделал так:
bunker = room {
...
dsc = function(s)
...
      if global_nnn == 10 and global_yyy == 20 then		   
         walk 'action_room_2'; 
         return true;
      end;	
...	
end;
}
Суть, если отбросить лишние детали: в комнате bunker можно переключать два параметра (условно nnn и yyy) и когда они доходят до значений "10" и "20" соответственно, игрок автоматически перемещается в другую комнату (происходят еще разные изменения в сюжете, в интерфейсе, но тут это не важно). В нынешнем виде, такая попытка перемещения не работает. Игрок, судя по всему остается в текущей комнате.

Вопрос: возможен ли в принципе walk из dsc (другие способы перехода именно в этом, конкретном случае не желательны) или про это можно сразу забыть?

[>] Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — kolobod
2019-10-11 15:34:05


Вроде решил проблему перехода в другую комнату убрав это из dsc в
lifeon (check); 
check = obj {
    life = function(s)
           if global_nnn == 10 and global_yyy == 20 then		   
           walk 'action_room_2'; 
           return true;
    end;
end;
};
Но радовался недолго)) Ибо игрок перемещаться-то перемещается из bunker в action_room_2 - но тема при этом не меняется, как сделано у меня при переходах в другие комнаты. И все оформление рушится. Реально не могу понять в чем засада, поскольку смена тем для всех комнат сделана через тот же check, и для всех один и тот же код, заставляющий тему меняться. При входе в комнату она идентифицируется по номеру, а под каждый номер прописано как меняется тема, типа такого:
===
if location == 4 then
theme.gfx.bg('theme/5.jpg');
theme.win.geom(700, 300, 600, 500);
end;
Везде это работает, а вот при переходе конкретно в action_room_2 почему-то нет.  

[>] Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — kolobod
2019-10-11 16:14:36


Все даже еще загадочнее. Сделал для эксперимента - что игрок переходит не напрямую из bunker в action_room_2, а сначала идет в другую комнату (и все при этом отлично работает, тема комнаты bunker меняется на тему выбранной комнаты, переход проходит нормально). Потом уже только переходим в action_room_2 - и снова все отлично: и переходим, и тема меняется правильно. Но вот стоит только вернуть переход обратно напрямую, из bunker в action_room_2 - как оформление крашится.
И тут моя логика начала сходить с ума.
Ибо если проблема в комнате bunker - то почему из нее отлично работают переходы в другие комнаты?
Если проблема в комнате action_room_2 - то почему в нее нормально переходим из любой другой комнаты, кроме bunker?
Буду дальше копать))) Прям самому интересно)

[>] Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — kolobod
2019-10-11 17:11:34


В общем, я представляю как ржут программисты читая мой бред))
Потыкав свой "код" я уже понял, что корректно и красиво те переходы что я прописал - работают только если переход вызван:
-кликом по картинке в комнате (не подходит в моем случае),
-кликом по объекту в комнате, через act (опять же, не подходит в силу геймплея),
-кликом по предмету инвентаря (тоже не подходит, надо из комнаты),
-из диалога (аналогично)

Через life = function и dsc комнаты мой переход со сменой тем не пашет. Либо нельзя, либо неправильно прописываю.

[>] Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — Peter
2019-10-11 18:15:43


Да, насчет dsc я уже осознал свой изначальный просчет)))
По enter пробовал - не получилось, насколько я понимаю он проверяет все при заходе в комнату, а там в ней дальше идут события. В общем перенос в enter
      if global_nnn == 10 and global_yyy == 20 then		   
         walk 'action_room_2'; 
         return true;
      end;
не срабатывает, потому что нужные условия достигаются игроком уже в ходе манипуляций в комнате, а не при заходе в нее.

Переход я все же сделал) Очень криворуким способом, но он работает)) Впрочем у меня все криворукое, и как благородный INSTEAD еще терпит мои дилетантские издевательства - я искренне не понимаю))))))

[>] Re: Перемещение через... dsc - в СТИД 2
std.prog
kolobod(syscall,30) — Peter
2019-10-11 21:49:43


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

[>] еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — All
2020-01-31 21:17:02


Доброй ночи всем, кто не спит) Есть еще дурацкий вопрос.
БАЗА = room {
       pic = function(s)
             pr 'pic/ГОРЫ.jpg'  --общий фон картинки для этой локации
		
	         if СЛУЧИЛОСЬ_СОБЫТИЕ then 
                    pr ';pic/АЛАРМ.jpg@500,100' --показать поверх общей картинки локации табличку "у нас событие!"
		 end;
       end;
       
       click = function(s, x, y) 
	       if x > 500 and x < 700 and y > 200 and y < 30 and СЛУЧИЛОСЬ_СОБЫТИЕ and ГОТОВ_ДИАЛОГ then --клик на табличку отправляет в диалог
                  walk 'НУЖНЫЙ_ДИАЛОГ';	
	          return true;			   
    	       end;
       end;	
}
Собственно, такая штука. Есть комната. Для иллюстрации происходящего в ней - задана картинка. При срабатывании условия СЛУЧИЛОСЬ_СОБЫТИЕ = true; поверх этой картинки появляется другая (табличка с приглашением запустить некое событие). И если при этом включено условие ГОТОВ_ДИАЛОГ = true; то клик на табличку запускать диалог НУЖНЫЙ_ДИАЛОГ.
В заданной конструкции все работает прекрасно. Но вот диалог заканчивается и я выпускаю из него игрока, ставя при выходе [[ СЛУЧИЛОСЬ_СОБЫТИЕ = false; ГОТОВ_ДИАЛОГ = true; walkback(); return true; ]]
То есть, на выходе я полностью убираю все условия и для отображения таблички, и для перехода снова в этот диалог. Но табличка не убирается и висит на месте, а если кликнуть на нее - снова попадаешь в диалог из которого вышел. Не могу понять почему?

[>] Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — kolobod
2020-02-01 08:50:09


Опечатался в своих путанных пояснениях) На выходе из диалога false ставлю везде. То есть и СЛУЧИЛОСЬ_СОБЫТИЕ = false; ГОТОВ_ДИАЛОГ = false;

[>] Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — Peter
2020-02-01 10:14:33


Уже разобрался. Внезапно дошло, что я как обычно туплю и не вижу очевидного - на выходе из диалога я вывод дополнительной картинки действительно отключал!
Но при этом - условия для ее "включения" вывода таблички были выше по коду, и все еще оставались актуальными. То есть - они одновременно "включали" все обратно. Вроде совершенно простая вещь, но мне понадобилось несколько часов чтобы допереть.

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

[>] Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — kolobod
2020-02-01 11:14:10


А, нет. Это была walkout(); но она не вызывает enter комнаты в которую возвращаешься, а его нужно вызвать - в нем важные условия прописаны.

[>] Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — kolobod
2020-02-01 11:36:24


В общем на данный момент проблема только в одном. Как сделать - чтобы при выходе из диалога в комнату без каких-либо комментариев - в изначальном описании комнаты не добавлялась пустая строка? Пустая строчка - все равно сдвигает вниз описание комнаты, что рушит созданное оформление.

[>] Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — Peter
2020-02-01 14:00:13


http://instead-games.ru/forum/index.php?p=/discussion/706/glupye-voprosy-ot-kolobod#latest
Удалось прикрепить - только переименовав в main.txt. Как lua - почему-то не прикреплялся.

[>] Re: еще вопросец (СТИД 2)
std.prog
kolobod(syscall,30) — Peter
2020-02-01 15:04:33


Ууииии! Это просто волшебная опция, буду знать теперь. Спасибо!

>"P.S. Забыл я уже старое API. Переходи на новое потом"
Осилить бы это))) Если добью наконец игру (стыдно сказать, 5 лет уже прошло - 5, КАРЛ! ПЯТЬ!!) попробую поразбираться в стид3.