Перейти к контенту
Halford

[SoC] Ковыряемся в файлах

Рекомендуемые сообщения

@BoBaH_671, как минимум то, что сообщение должно выдаваться в строго определенном месте.

  • Нравится 1

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

 

 

Поисковые квесты с отметкой на карте - бред и нонсенс.

 

А вот не скажи. Как раз наоборот. Когда у меня задания вида "ну типа там, на хуторе где-то бросил". Вот это где-то и надо бы обозначить. Примерно естественно, как область. Дальше уже простая психология. Если мне надо искать где-то там, то я сразу плюну и пойду на ютубе посмотреть, т.к. я такой внимательный, что мог в упор пропустить. И потом, квестописатели очень часто не учитывают, что когда они делают/описывают тайник, они имеют в голове контекст, которого не будет у игрока. Вот и получаются очередные "за щитом". А вот когда на карте обозначена область, то я, как игрок, точно знаю, что оно тут. И могу искать до упора. Я уверен, что оно не вон за теееееем кустом, т.к. он за границами обозначенной области. И значит, если я и пропустил  и не заметил его, то где-то вот тут, а не там. И потом, когда Кузнецов говорит ( не к ночи будет упомянут ОП-2 ): отлично Стрелок, за это я тебе подарю свой тайник на ЧАЭС-2. Возникает логичный вопрос: Кузнецов, ты в своем уме? Это твой тайник, ты мне его в оплату даешь и ты не знаешь где примерно его оставил и предлагаешь искать на всей локации? Да ты издеваешься что-ли? Т.ч. примерная метка - это со всех сторон хорошо. Если бы я сам кому-то описывал какое-то место, то сам бы ему на карте нарисовал кружок и сказал: вот тут примерно тайник я сделал. Т.к. естественно я не могу с точность до метра знать его положение.

  • Согласен 3
Ссылка на комментарий

@Silver Raven, в таблицу tips_icons видимо не прописан generators_alex_squad_sos_signal с координатами для иконки.

  • Полезно 1
Ссылка на комментарий

@dsh, проблема только в том, что практически все кодеры ставят такую метку на сам искомый объект, в результате бежим в середину и получаем желаемое, тут и надобно создавать отклонение, чтобы твоя идея действительна получала смысл.

 

@BoBaH_671, а с каких пор sr_tip не нормален? В оригинале конечно его надо переделать, но задумка то вполне себе здравая, его конечно лучше под sr_idle подписать и переделать всю логику у объектов на новый лад.

 

По рестрикторам, кстати, на мой взгляд, там практически все лучше скомпоновать в одну единую схему, в частности и sr_tip и sr_no_weapon и практически все остальное. Сделать богатую кастомизацию и все, а по дефолту это будет sr_idle, так как я не думаю, что кто-то читает или собирает статистику по db.storage.

Ссылка на комментарий

 

 

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

on_actor_inside = %=func% что мешает использовать? По мне та схема кривая, раз у тебя вылетело, проще вызвать функцию, чем писать схему.

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий

@Charsi, да, похоже на то. Забыл поправить имя иконки в таблице, когда переписывал схему. Уже и забыл где ее искать, в config\ui, кажется?

 

Автопауза в стиле ЗП твоя же разработка? Можно как-нибудь скрыть курсор во время работы скрипта? И не включать весь скрипт при старте игры? (там бяка получается, если принудительно пропустить начальный ролик)

 

@BoBaH_671, при чем тут ее кривость. Если думать в этой плоскости, то в Сталкере криво практически все, от этого никуда не денешься.

Вот старая схема. Перегруженная лишними элементами (писал давно, знаний не хватало), но вполне рабочая:

 

 

[logic]
active = sr_idle@start

[sr_idle@start]
on_actor_inside = sr_idle@start_message_timer, sr_idle@stop

[sr_idle@start_message_timer]
on_timer = 3000| sr_tip@alex_squad_need_help

[sr_tip@alex_squad_need_help]
name = generators_alex_squad_need_help_message
type = tips
sender = alex_squad
showtime = 7000
cond = {-alex_squad_need_help} %+alex_squad_send_sos_signal_start_quest_timer%
on_info = {+alex_squad_send_sos_signal_start_quest_timer} sr_idle@quest_timer

[sr_idle@quest_timer]
on_timer = 6000 | nil %+alex_squad_need_help%

[sr_idle@stop] 

 

 

Изменено пользователем Silver Raven

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

Ссылка на комментарий

 

 

По мне та схема кривая, раз у тебя вылетело

Я как раз ее собираюсь переписывать. Что по твоему в ней кривое? Ну, например, ты видишь один абсолютно явный минус, который при оздоровлении скриптов появляется? Если да, то вот сначала скажи о нем, далее уже о том, что конкретно тебе не нравится.

Ссылка на комментарий

@Карлан, для сообщений глупо создавать целую схему рестриктора, проще, как по мне, написать универсальную функцию, которую можно вызывать из логики с передачей аргументов: текста, иконки отправителя, времени "висения" и т.д.

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий

@BoBaH_671, мне кажется это куда удобнее настраивать в кастом дате. Но, я выше и написал, что создание отдельной схемы действительно излишне, лучше все свести в единую схему, какую-нибудь sr_custom, которая в простом режиме работает как sr_idle, но имеет все опции из других схем. Какие-то действительно мудреные схемы возможно стоит оставить отдельными, но утверждать не могу, досконально в них пока не разобрался.

 

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

  • Нравится 1
Ссылка на комментарий

Вызываю ф-ию "test" три раза, с интервалом 3 сек.

В иоге в псторе записано "tt_1" "tt_2" "tt_3" И запускаются три таймера "tt_1" "tt_2" "tt_3"
 

function test(tim)
if tim==nil then
tim = ""
end
local a=1
while db.storage[db.actor:id()].pstor["tt_"..a] do
a=a+1
if a>10 then
return false
end
end
WritePstor("tt_"..a, tim)
start_real_timer(15, "test.start"):set_name("tt_"..a)
end

В момент срабатывания первого таймера переменная а = 1

Вариант 1

function start()
for a=1,10,1 do  -- преребираем всё
if timer_exits("tt_"..a) then -- в данном примере пустая проверка, т.к. она всегда вернёт true
db.actor:give_info_portion("porticion"..a) -- выдаст все поршни от porticion1 до porticion10
ClearPstor("tt_"..a) -- сотрёт все записи в пстор tt_
get_timer("tt_"..a):remove() -- и удалит все таймеры tt_
end
end
end

Вариант 2

function start()
for m=1,10,1 do
local a = math.min(1, m)  -- если добавить эту строчку то а будет равна 1 и получится:
if timer_exits("tt_"..a) then -- если "tt_1" тогда
db.actor:give_info_portion("porticion"..a) -- выдадим поршень porticion1
ClearPstor("tt_"..a) -- сотрёт запись в пстор tt_1
get_timer("tt_"..a):remove() -- и удалит таймер tt_1
end
end
end

По идеи, почти то что надо. Но, при повторном срабатывании таймера, где ..a уже будет равна 2 сработает затык, т.к.

 local a = math.min(1, m) -- всегда вернёт 1

Но нам то  надо получить 2 чтобы прошла проверка

 if timer_exits("tt_"..a) then -- гдеа должна быть равна 2

и заодно выдать поршень porticion2

db.actor:give_info_portion("porticion"..a)-- где а тоже должна быть 2

Суть вопроса думаю ясна. Но на всякий уточню.
Подскажите, как бы сделать, так, что бы при срабатывании таймера..1, продолжали работать остальные таймеры.

Тут поршни приведенгы в качестве примера действия на срабатывание таймеров. Вопрос не в поршнях!
По идеи, надо менять эту строчку local a = math.min(1, m) -- всегда вернёт 1 ,но я не могу сообразить как это сделать.

 

 

Ссылка на комментарий

 

ins33, а что сподвигло на изобретение велосипеда? Таймеры от Maladrinus есть в OGSE а от Artos так вообще отдельным модулем. Пользуйтесь.

 

Ссылка на комментарий

@Kondr48,

Кто говорит о велосипеде? Вы вопрос внимательно прочитали? Хотя чего спрашиваю... Вы'ж автора таймера даже не узнали

.

Посмотрите первый и и второй вариант. в них и есть суть вопроса.

Ссылка на комментарий

 

Kober(BRUC), в оригинале включение/выключение фонаря отрабатывается движком. О какой связи идёт речь?

 

Ссылка на комментарий

И потом, когда Кузнецов говорит ( не к ночи будет упомянут ОП-2 ): отлично Стрелок, за это я тебе подарю свой тайник на ЧАЭС-2. Возникает логичный вопрос: Кузнецов, ты в своем уме? Это твой тайник, ты мне его в оплату даешь и ты не знаешь где примерно его оставил и предлагаешь искать на всей локации? Да ты издеваешься что-ли?

 

Ну, так это и не поисковый квест, по большому. Я немного другое имел ввиду.

---------------------------------

www.amk-zone.de

Ссылка на комментарий

@Kober(BRUC), Почитай "функция разрешения колбеков" в xray-extensions - list_of_fixes.wiki


Подскажите, как остановить цикл:

for a, b in pairs(tbl) do
for c, d in pairs( do
if d == osect then -- если условие не выполнено, то идём дальше
todo
elseif d ~= osect then -- если условие выполнено, то todo выполняется 6 раз, а надо один!
todo_2 
log1("todo_2)")
Скажите, я правильно написал второе условие

 

Изменено пользователем ins33
Ссылка на комментарий
как остановить цикл

ну как-то так:

for a, b in pairs(tbl) do
     for c, d in pairs( do
          if d=значению, при котором надо прекратить цикл then
               break
          end
     end
end

здесь break остановит цикл for c, d in pairs( B) do.

Изменено пользователем UnLoaded
Ссылка на комментарий

@ins33, для цикла по условию существует цикл while.

 

Пример:

i = 0
while i ~= 5 do
i = i+1
end

В цикле for в подобном случае надо использовать ключевое слово break, например вышеизложенный цикл сделанный через for будет выглядеть вот так:

for i=1, math.huge do
if i == 5 then
break
end
i = i+1
end
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   2 пользователя

AMK-Team.ru

×
×
  • Создать...