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

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

@Graff46 можно взять список сейвов, отсортировать их по дате и первый, всегда будет самый свежий. В диалоге загрузки сейва так делается. А вот в какой момент так делать, уже тебе решать. Например, из bind_stalker.save.

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

Кстати, о птичках - напомните, как отлавливается квик-сэйв/квик-лоад ?

То есть, перехатить попытку, и успеть что-нибудь сделать, "пока не началочась" ? Коллбэк актора - это уже поздно.

Ссылка на комментарий
1 час назад, dsh сказал:

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

Попробовал, повесил на сейв в биндере, но возвращается предыдущий файл, видимо не успевает записаться новый сейв, остается только таймеры велосипедить...

function test ()
local f = getFS()	
	local flist = f:file_list_open_ex("$game_saves$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly),"*.sav")
	flist:Sort(FS.FS_sort_by_modif_down)
	local file = flist:GetAt(it)	
	file = file:NameFull() or 'none'
	get_console():execute(file)
end

Почему-то не вылетело, хотя it не объявлено...

Изменено пользователем Graff46
Ссылка на комментарий
50 minutes ago, Graff46 said:

но возвращается предыдущий файл

Попробуй не прямо из save это делать, а запускать какой-либо таймер, который это сделает на следующем апдейте.

 

А, ну да, ты об этом и написал. Почему велосипедить. Вполне нормальное решение. Таймеры, конечно, нормальные нужно иметь. Но их по любому иметь нужно, как и менеджер событий. Я бы вот так сделал:

 

...
dsh.exec_on_update(
  function()
    -- тут что-нибудь, если нужно
    rename_last_save()
    -- тут еще что-нибудь
  end
)

или еще проще, если ничего лишнего не нужно

dsh.exec_on_update( my_script.rename_last_save )

 

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

Насчёт порчи артов... 

С помощью этой функции:

function degrad_art(obj)
    if obj:section() == "af_medusa" then
        obj:set_condition(0.5)
        -- alife():release(alife():object(obj:id()))
    end
end

баловался с состоянием арта - всё работает.

Но вот как это реализовать в игре? Денис говорил, что через net_packet можно не меняя движок это сделать. 

Скачал DSH, нашёл там полный скрипт порчи: dsh_art_degrad.script. Где он подключается?

Важнейшая задача цивилизации - научить человека мыслить.

Ссылка на комментарий
Только что, Graff46 сказал:

отчасти xr_combat.script

что значит отчасти?

Ссылка на комментарий
Только что, alexsimm сказал:

что значит отчасти?

А что значит " какие файлы отвечают за поведение неписей в режиме боя? "? Поведене НПС в боёвке широкое понятие... хр_комбат отвечает за тип боя кемперский, монолитовский и еще какой то... Вот это почитайте... Ну или пишите конкретней чего хотите, часть параметров НПС типа меткости, глазастости и тд -  в конфигах записано.

Изменено пользователем Graff46
Ссылка на комментарий
30 минут назад, Graff46 сказал:

Ну или пишите конкретней чего хотите,

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

Ссылка на комментарий
Только что, alexsimm сказал:

куда идти, что делать как воевать

В основном это движковое всё, но посмотрите xr_combat и xr_danger...

  • Согласен 1
Ссылка на комментарий
13 минут назад, Graff46 сказал:

В основном это движковое всё, но посмотрите xr_combat и xr_danger...

Реально через скрипты изменить поведение неписей в режиме боя, допустим, не двигаться на цель,а спрятаться  или обойти другим путём?

Ссылка на комментарий
5 минут назад, buffy сказал:

Не утверждаю, но по-моему в огсе это сделано.

мне не нравится, когда неписи как бараны идут по одному пути на тебя и дохнут в одном месте. это поправимо?

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

Это - вообще в первую очередь от локации зависит. Если укрытий нет - непись прятаться не будет. Второе - конфиги оружия.

Ссылка на комментарий
17 минут назад, Dennis_Chikin сказал:

Это - вообще в первую очередь от локации зависит. Если укрытий нет - непись прятаться не будет. Второе - конфиги оружия.

укрытия есть, было бы желание

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

Однако...

 

делаем раз:

function amk_particle:stop()
    self.give_dmg = false
    if self.particle:playing() then self.particle:stop_deffered() end
    if self.snd and self.snd:playing() then self.snd:stop() end
end

 

делаем два:

function amk_particle:__finalize()
    log( "log", "finalize: %s ...", self.p_name )
    if self.particle.playing and self.particle:playing() then self.particle:stop() end
    t_particles[self.p_id] = nil
    log( "log", "finalize: %s, ok", self.p_name )
end

 

результат:

! ALife simulator has not been started yet
* Log file has been saved successfully!
stack trace:

0023:0583DAD0 xrGame.dll
0023:00E77041 xrLUA.dll, luabind::detail::get_class_name()
0023:00E7E918 xrLUA.dll, luabind::detail::class_rep::function_dispatcher()

 

Я думал, alife(), как и прочие партиклы, должны дестроиться ПОСЛЕ того, как отработали все "пседооопшные" дела...

 

Ну и авторы скрипта, видимо, тоже...

 

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

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

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

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

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

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

Войти

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

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

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

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