Sigerous.ru - официальный сайт Sigerous Mod
Войти на сайт Регистрация Новые сообщения Пользователи Правила сайта Поиск по форуму
Страница 12 из 30«1210111213142930»
Форум » Вселенная S.T.A.L.K.E.R. » S.T.A.L.K.E.R. » По следам Черных Ангелов. Бета-версия. (Тут обсуждаем прохождение бета-версии.)
По следам Черных Ангелов. Бета-версия.
sergej5500Дата: Вторник, 21.04.2015, 18:40 | Сообщение # 1
Полевой Исследователь
Ученые сталкеры
Сообщений: 2990
Награды: 24
Репутация: [ 1186 ]

Добрый вечер.

Выкладываю пробную версию аддона для открытого тестирования.

Аддон поделен на 2 части. Основная часть включает локации, модели, озвучку и текстуры. Дополнительная часть включает конфиги, скрипты и спавн. Для нормальной работы нужны обе части аддона.

[cut=Ссылки]Основная часть аддона

Дополнительная часть аддона[/cut]

[cut=Установка]1. Скачиваем аддон по ссылкам.
2. Распаковываем архивы.
3. Обе папки gamedata, полученные после распаковки, копируем в папку с игрой.
4. Аддон устанавливается на чистую игру.
5. Новая игра обязательна.
[/cut]

[cut=Внимание]1. Аддон устанавливаем на Зов Припяти 1.602.
2. Дополнения и надстройки для СГМ для этого аддона не подходят!
3. На основных локациях ЗП много новых квестов. На локациях Лиманск, ЧАЭС и Рыжий Лес пока нет ничего. Туда можно сходить для ознакомления. [/cut]

[cut=Выбор стартовой локации]В аддоне есть возможность выбора. Начать игру с Кордона или с Затона.

Открываем файл gamedata\configs\scripts\escape\esc_task_line. Находим строки:

;on_info2 = {+esc_game_start_saved} sr_idle@esc_way_to_zaton_sms
on_info2 = {+esc_game_start_saved} sr_idle@teleport_to_zaton

Первая строка запускает квестовую линию на Кордоне. Вторая строка телепортирует игрока на Затон.
Перед первой строкой стоит точка с запятой. То есть движок её на читает и игрок будет отправлен на Затон сразу после начала новой игры. Если вы хотите пройти квестовую линию Кордон-Болота, то нужно убрать точку с запятой у первой строки и поставить точку с запятой у второй строки. Вот так:

on_info2 = {+esc_game_start_saved} sr_idle@esc_way_to_zaton_sms
;on_info2 = {+esc_game_start_saved} sr_idle@teleport_to_zaton.

Точку с запятой нужно ставить в английской раскладке клавиатуры. Файл правим до начала новой игры.[/cut]

Данная версия аддона тестовая. Поэтому возможны разнообразные проблемы при прохождении.

Благодарности.
1. GeJorge - за прекрасный мод.
2. denis2000, makdm, FantomICW - за неоценимую помощь в создании дополнения.
3. Мирянин, greg и Glomar - за помощь в тестировании дополнения.
4. greg и Glomar - идеи по сюжету и квестам.
5. Geonezis - за учебник по квестостроению и некоторые квесты.
6. Разработчикам аддона "Время Альянса" за полезные скрипты и модели сталкеров.


[cut=Как найти лог вылета]Что такое LOG ошибки, и как мне его найти?

Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда.
Для того чтоб найти LOG необходимо зайти вот сюда:

В Win XP лог находится:

C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs

Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.

В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs

Если по указанным адресам вы не нашли папку с логами (ситуация встречается в "кривых" репаках), то вбейте в поисковике своего компьютера слово logs или logs*, и если эти данные имеют место быть, поисковик выдаст вам все адреса нахождения этих данных... останется выбрать только тот который необходим. [/cut]

[cut=Фикс от 12.05.15]
Ссылка
Установка:
1. Удалить из сборки папки configs, scripts и spawns.
2. Распаковать архив фикса.
3. Скопировать папки фикса в геймдату мода с заменой файлов.
4. Новая игра обязательна.

Основные изменения:
1. Торговцу военных добавлен новый квест. Награда - диск для съема денег.
2. Устранил проблемы с работодателями. Квесты теперь выполняются без сбоев.
3. Изменен баланс у торговцев и механиков.
4. Исправлены все замеченные ранее критические ошибки.
5. На Кордон и Болото добавлены сберегатели.
6. Добавлен патрон 7.62х39. Соответственно, поправлено оружие.
7. Частично заселена Свалка. Там есть обычные и СГМ-тайники, СГМ-мины. Ходят сталкеры и мутанты. Квестов пока нет.
[/cut]

[cut=Фикс от 23.05.15]

Фикс
Исправлено зависание квеста Волка.
Исправлен вылет на Болоте.
Исправлено отсутствие метки в квесте "Лечь спать".
Установка: Объединить геймдату фикса с геймдатой мода с заменой файлов.
Ставить поверх фикса от 12.05.15
[/cut]
 
pavel1097Дата: Воскресенье, 03.05.2015, 20:32 | Сообщение # 166
Ветеран
Свобода
Сообщений: 384
Награды: 6
Репутация: [ 37 ]

makdm, вот сработало, когда строки

if prefix == "actor_binder" then
format_print("Длина нет-пакета Главного Героя = %d", dif )
end

написал не сразу после local dif = p:w_tell() - save_markers[result]

а перед else в условии if mode == "save" then

if mode == "save" then
local dif = p:w_tell() - save_markers[result]
printf(result..": SAVE DIF: %s", dif)
if dif >= 8000 then
printf("WARNING! may be this is problem save point")
end
if dif >= 10240 then
-- abort("You are saving too much")
end
p:w_u16(dif)

if prefix == "actor_binder" then
format_print("Длина нет-пакета Главного Героя = %d", dif )
end

else
 
makdmДата: Воскресенье, 03.05.2015, 20:39 | Сообщение # 167
Рожденный в СССР
Разработчики
Сообщений: 1268
Награды: 26
Репутация: [ 1858 ]

Цитата pavel1097 ()
вот сработало, когда строки

Ну и хорошо, что сработало.
А где результат???


Терпение......
И все получится!
 
pavel1097Дата: Воскресенье, 03.05.2015, 20:42 | Сообщение # 168
Ветеран
Свобода
Сообщений: 384
Награды: 6
Репутация: [ 37 ]

Было 15 782 - всё распродал стало 15 900....

Наверное не вещи тут роль играют, а кол-во квестов взятых и выполненных.
15 782 - не было квеста на Химеру с Гонтой и Мстителем - ящики полны, 2500 кГ хабара
15 900 выполнил квест Гонты и взял квест Мстителя, ящик почти пустой - 800 кГ

Добавлено (03.05.2015, 20:42)
---------------------------------------------
в СГМ 2.1 2.2 таких проблем не было...

- Может надо выполненные квесты "сбрасывать" ?


Сообщение отредактировал pavel1097 - Воскресенье, 03.05.2015, 20:49
 
makdmДата: Воскресенье, 03.05.2015, 20:53 | Сообщение # 169
Рожденный в СССР
Разработчики
Сообщений: 1268
Награды: 26
Репутация: [ 1858 ]

pavel1097, ну что я могу вам сказать.
Вы "приплыли". Дальше что-то добавлять в мод не имеет смысла. Вы исчерпали возможности сохранения.
По человечески скажу, что очень жаль.
НО Сергею придётся все делать с "нуля" заново. И полностью менять саму систему квестов и постоянно контролировать нет-пакет ГГ.
Я, когда делаю аддоны, постоянно слежу за пакетом ГГ. У меня больше, чем 5000 редко бывает. Я уже ненужные ранее выданные инфопоршни закрываю( сбрасываю флаги ).
Так что могу вам посоветовать начать НИ и делать сохранения и смотреть, когда пакет начинает набирать объём.
Вот с этого момента нужно смотреть, что и как переделать в игре.


Терпение......
И все получится!
 
pavel1097Дата: Воскресенье, 03.05.2015, 20:57 | Сообщение # 170
Ветеран
Свобода
Сообщений: 384
Награды: 6
Репутация: [ 37 ]

- Ха, вот хохма! Переместился с GPS-Навигатором (ничего вообще не делал) стало 15939

makdm, не в квестах дело, а в телепортациях!!!

Добавлено (03.05.2015, 20:57)
---------------------------------------------
Еще раз переместился стало -15968 !!!! по 39 единиц добавляет каждое перемещение!

Вот где собака зарыта!!!! У меня уже 91 использованный GPS-Проводник !


Сообщение отредактировал pavel1097 - Воскресенье, 03.05.2015, 21:00
 
makdmДата: Воскресенье, 03.05.2015, 21:12 | Сообщение # 171
Рожденный в СССР
Разработчики
Сообщений: 1268
Награды: 26
Репутация: [ 1858 ]

Цитата pavel1097 ()
не в квестах дело, а в телепортациях!!!

А я и не настаиваю, что в квестах.
Я же писал
Цитата makdm ()
начать НИ и делать сохранения и смотреть, когда пакет начинает набирать объём.

Вы выявили, что набор идёт после телепортации ГГ. Если у других также, то нужно убирать из игры проводники.
Возможно что-то ещё влияет. Нужно тестировать и выяснять.
По крайней мере я вам дал инструмент, а вы уж им пользуйтесь.


Терпение......
И все получится!
 
sergej5500Дата: Воскресенье, 03.05.2015, 22:41 | Сообщение # 172
Полевой Исследователь
Ученые сталкеры
Сообщений: 2990
Награды: 24
Репутация: [ 1186 ]

Цитата pavel1097 ()
не в квестах дело, а в телепортациях!!!


Возможно, связь есть. Но не очевидная. Я тоже попробовал эту функцию. Начал с Кордона. Заспавнил себе проводники. Добежал до Деревни Новичков. И пару раз телерортировался туда и обратно. Получил.

Длина нет-пакета Главного Героя = 11206 -- стартовый автосейв.
Длина нет-пакета Главного Героя = 11440 -- 1-й сейв у Деревни Новичков.
Длина нет-пакета Главного Героя = 11597 -- 2-й сейв у Блокпоста
Длина нет-пакета Главного Героя = 11503 -- 3-й сейв у Деревни Новичков.

Так что прямой связи тут нет.

До выкладывания я проходил сборку в тестовых целях. Прошел все. От Кордона до Подземелий Агропрома. Затык случился в Припяти на квестах Монолита. Сейвы стали биться. Задания перестали обновляться. Методом тыка выяснил, что в личных ящиках скопилось много хабара. Аптечки и патроны. Подарок от сталкеров из оригинала ЗП. Когда распродал хабар, то прошел узкое место и дальше игра шла без сбоев.

Кроме того, проводники в СГМ уже очень давно. И проблем с ними не было. Основное отличие моей сборки от оригинала СГМ в том, почти все неписи с кастом-датами (все СГМ-персы из оригинального СГМ) переведены под сквады.

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

Добавлено (03.05.2015, 22:41)
---------------------------------------------
makdm,

Просмотрел функцию, которую Вы поправили.

[cut=Функция]-- Функции для проверки корректности сейв лоад
function set_save_marker(p, mode, check, prefix)

-- определяем ключ маркера.
local result = ""
-- if debug ~= nil then
-- local info_table = debug.getinfo(2)
-- local script_name = string.gsub(info_table.short_src, "%.script", "")
-- script_name = string.gsub(script_name, "gamedata\\scripts\\", "")
-- result = script_name
-- end

-- if prefix ~= nil then
result = result .. "_" .. prefix
-- end

if check == true then
if save_markers[result] == nil then
abort("Trying to check without marker %s", result)
end

if mode == "save" then
local dif = p:w_tell() - save_markers[result]
if prefix == "actor_binder" then
format_print("Длина нет-пакета Главного Героя = %d",dif)
end
printf(result..": SAVE DIF: %s", dif)
if dif >= 8000 then
printf("WARNING! may be this is problem save point")
end
if dif >= 10240 then
-- abort("You are saving too much")
end
p:w_u16(dif)
else
local c_dif = p:r_tell() - save_markers[result]
local dif = p:r_u16()
if dif ~= c_dif then
--/fill_log("check="..check)
abort("INCORRECT LOAD [%s].[%s][%s]", result, dif, c_dif)
return
else
printf(result..": LOAD DIF: %s", dif)
end
end
return
end

if mode == "save" then
printf(result..": set save marker: %s", p:w_tell())
save_markers[result] = p:w_tell()
if p:w_tell() > 16000 then
abort("You are saving too much")
end
else
printf(result..": set load marker: %s", p:r_tell())
save_markers[result] = p:r_tell()
end

end[/cut]

Возникло два вопроса.

if p:w_tell() > 16000 then. Упоминалось, что длина пакета не больше 16000. Это число задает пакет?

r_u16. 16-битная таблица. Если её сделать 24 или 32 битной, то можно ли снять ограничение?

 
makdmДата: Воскресенье, 03.05.2015, 23:34 | Сообщение # 173
Рожденный в СССР
Разработчики
Сообщений: 1268
Награды: 26
Репутация: [ 1858 ]

Цитата sergej5500 ()
Если её сделать 24 или 32 битной, то можно ли снять ограничение?


Длина пакета установлена ( "зашита" ) в движке.

const u32 NET_PacketSizeLimit = 16*1024;

Поэтому нужно искать причину переполнения пакета.

Добавлено (03.05.2015, 23:34)
---------------------------------------------
sergej5500, если запустить оригинальный ЗП, то длина нет-пакета при старте игры составляет

Длина нет-пакета Главного Героя = 7996

У вас при старте игры сразу

Цитата sergej5500 ()
Длина нет-пакета Главного Героя = 11206 -- стартовый автосейв.


Вот и смотрите, что вы там такого сохраняете лишнего.
Файл bind_stalker.script, метод function actor_binder:save(packet)


Терпение......
И все получится!
 
sergej5500Дата: Понедельник, 04.05.2015, 01:24 | Сообщение # 174
Полевой Исследователь
Ученые сталкеры
Сообщений: 2990
Награды: 24
Репутация: [ 1186 ]

Цитата makdm ()
Поэтому нужно искать причину переполнения пакета.


Провел несколько экспериментов с Вашей функцией. Выяснил следующее.

1. В чистом ЗП на старте игры пакет порядка 8000.
2. В СГМ 2.2 и в аддоне Геонезиса он около 9000-9500.
3. В моей сборке он равен 11000-11500.

Провел еще несколько опытов.

1. Убрал все объекты с незаселенных локаций. Лиманск, рыжий Лес и т.д.
2. Убрал все сквады из simulation.
3. Отключал спавн СГМ-тайников и СГМ-мин.

Результат нулевой. Пакет около 11000-11500 и практически не меняется. Отчего он зависит?

1. От кол-ва рестрикторов на локациях?
2. От кол-ва работ для неписей в смартах?
3. От кол-ва предметов в тайниках оригинальной игры?

Добавлено (04.05.2015, 01:24)
---------------------------------------------

Цитата makdm ()
Вот и смотрите, что вы там такого сохраняете лишнего.


[cut=Функция]function actor_binder:save(packet)
set_save_marker(packet, "save", false, "actor_binder")
if rx_ai then rx_ai.actor_save(packet) end
object_binder.save(self, packet)
packet:w_u8(level.get_game_difficulty())
if self.st.disable_input_time == nil then
packet:w_bool(false)
else
packet:w_bool(true)
utils.w_CTime(packet, self.st.disable_input_time)
end
xr_logic.pstor_save_all(self.object, packet)
self.weather_manager:save(packet)
release_body_manager.get_release_body_manager():save(packet)
self.surge_manager:save(packet)
sgm_loader.save(packet)
sr_psy_antenna.save( packet )
packet:w_bool(sim_board.get_sim_board().simulation_started)
sim_board.save(packet)
xr_sound.actor_save(packet)
packet:w_stringZ(tostring(self.last_level_name))
xr_statistic.save(packet)
treasure_manager.get_treasure_manager():save(packet)
local n = 0
for k,v in pairs(db.script_ids) do
n = n + 1
end
packet:w_u8(n)
for k,v in pairs (db.script_ids) do
packet:w_u16(k)
packet:w_stringZ(v)
end
task_manager.get_task_manager():save(packet)
packet:w_u8(self.object:active_slot())
local deimos_exist = false
for k,v in pairs(db.zone_by_name) do
if(db.storage[v:id()] and db.storage[v:id()].active_scheme=="sr_deimos") then
deimos_exist = true
packet:w_bool(true)
packet:w_float(db.storage[v:id()].sr_deimos.intensity)
end
end
if not deimos_exist then
packet:w_bool(false)
end
if self.last_detective_achievement_spawn_time == nil then
packet:w_bool(false)
else
packet:w_bool(true)
utils.w_CTime(packet, self.last_detective_achievement_spawn_time)
end
if self.last_mutant_hunter_achievement_spawn_time == nil then
packet:w_bool(false)
else
packet:w_bool(true)
utils.w_CTime(packet, self.last_mutant_hunter_achievement_spawn_time)
end
set_save_marker(packet, "save", true, "actor_binder")
end[/cut]

[cut=sgm_loader]local save_manager=sgm_save.get_save_manager()
local hud_manager=sgm_huds.get_hud_manager()
local battery_manager=sgm_battery.get_battery_manager()
local blackday_manager=sgm_blackday.get_black_day()
function sigerous_mod_main()
sigerous_mod_loader()
--/show_hud_message(sgm_functions.read_variable("mil_b7_wave_counter"))
--/give_quick_news("table_mod_teleports="..get_table_lines(sgm_flags.table_mod_teleports))
--/show_hud_message(sgm_functions.is_smart_empty("mil_smart_terrain_2"))
--/show_hud_message(sim_board.get_sim_board():get_smart_population(sim_board.get_sim_board().smarts_by_names["mil_smart_terrain_2"]))
end
function sigerous_mod_loader()
save_manager:update()
battery_manager:update()
if check_seconds(2) then
blackday_manager:initialize()
blackday_manager:update()
end
sgm_container.container_main()
if check_seconds(2) then
sgm_cleaners.cleaners_main()
end
sgm_effects.effects_main()
if check_seconds(2) then
sgm_reward.reward_main()
end
hud_manager:update()
--if check_seconds(4) then
--sgm_info.info_main()
--end
if check_seconds(1) then
sgm_inventory.inventory_main()
end
sgm_options.options_main()
if check_seconds(1) then
sgm_news.news_main()
end
sgm_queue.queue_main()
--if check_seconds(1) then
--sgm_tasks.task_main()
--end
sgm_variables.variables_main()
--if check_seconds(3) then
--sgm_respawn.respawn_main()
--end
sgm_modules.module_actor(db.actor)
sgm_update.update_main()
sgm_timers.timers_main()
end
function save(packet)
save_manager:save(packet)
battery_manager:save(packet)
end
function load(reader)
save_manager:load(reader)
battery_manager:load(reader)
end[/cut]

В сборке 288 тайников оригинальной игры. В оригинальном СГМ 2.2 их 264. Разница небольшая.
Кол-во смартов примерно одинаково. Кол-во рестрикторов примерно одинаково.
 
pavel1097Дата: Понедельник, 04.05.2015, 10:45 | Сообщение # 175
Ветеран
Свобода
Сообщений: 384
Награды: 6
Репутация: [ 37 ]

Уважаемые разработчики, нет-пакет - это же файл, если знать его структуру и принцип формирования, то можно научится его чистить? Хотя бы вручную. Для начала как убрать сведения о телепортациях с помощью GPS-проводников?

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

- на заре СГМ была проблема с количеством вещей и количеством найденных артефактов (было максимум 255 штук), тогда переделали функцию с 16 битной на 32-битную и проблема пропала


Сообщение отредактировал pavel1097 - Понедельник, 04.05.2015, 10:52
 
makdmДата: Понедельник, 04.05.2015, 11:02 | Сообщение # 176
Рожденный в СССР
Разработчики
Сообщений: 1268
Награды: 26
Репутация: [ 1858 ]

Цитата pavel1097 ()
нет-пакет - это же файл, если знать его структуру и принцип формирования

Это не файл. Это бинарный буфер размером 16 килобайт, в который можно писать и из которого можно читать.

sergej5500, в вашем методе save(packet) по сравнению с ЗП добавлены следующие строки

if rx_ai then rx_ai.actor_save(packet) end
sgm_loader.save(packet)
sim_board.save(packet)

Их закомментируйте вот так

--if rx_ai then rx_ai.actor_save(packet) end
--sgm_loader.save(packet)
--sim_board.save(packet)

и посмотрите сколько стал нет-пакет при старте игры.
Затем одну строку раскомментируйте. И снова смотрите в игре прирост нет-пакета. И т.д.
Выявите, кто даёт больший прирост.


Терпение......
И все получится!
 
sergej5500Дата: Понедельник, 04.05.2015, 11:04 | Сообщение # 177
Полевой Исследователь
Ученые сталкеры
Сообщений: 2990
Награды: 24
Репутация: [ 1186 ]

Цитата pavel1097 ()
что кол-во вещей в ящиках не влияет на нет-пакет, я все распродал - он не уменьшился.


Попробуйте отследить изменения пакета. Загрузите сейв в начале игры. запишите именное сохранение. Сделайте еще пару сейвов в ключевых местах. И посмотрите, чему этот пакет равен.
 
pavel1097Дата: Понедельник, 04.05.2015, 11:25 | Сообщение # 178
Ветеран
Свобода
Сообщений: 384
Награды: 6
Репутация: [ 37 ]

ок, сейчас
 
DrLivsyДата: Понедельник, 04.05.2015, 11:29 | Сообщение # 179
Техногенный
Вольные сталкеры
Сообщений: 3191
Награды: 23
Репутация: [ 878 ]

Всех приветствую!

makdm, Дим, испытал твои рекомендации на текущей игре (по сюжету осталось 1 задание на поиск ключа и найти переход в ТД):
Задание: "Гон"
Длина нет-пакета Главного Героя = 15944 - задание выполнено
Длина нет-пакета Главного Героя = 15936 - очищена локация от "тушек" и "мусора"
Длина нет-пакета Главного Героя = 15777 - сдача квеста и получение награды




Сообщение отредактировал DrLivsy - Понедельник, 04.05.2015, 11:31
 
makdmДата: Понедельник, 04.05.2015, 11:35 | Сообщение # 180
Рожденный в СССР
Разработчики
Сообщений: 1268
Награды: 26
Репутация: [ 1858 ]

DrLivsy, Шамиль привет!
Вижу, что всё на грани "фола". Ещё чуть-чуть и игра вывалится на рабочий стол.

Каждый квест "жрёт" около 150 байт нет-пакета. Вот как сдал квест, так сразу объём и упал.
Если у тебя одновременно например взято 20 квестов, то и сожрёт соответственно около 3000 байт нет-пакета.

Отсюда первый вывод - не нужно набирать"кучу" квестов, а потом героически их проходить. Лучше делать всё поэтапно.


Терпение......
И все получится!


Сообщение отредактировал makdm - Понедельник, 04.05.2015, 11:43
 
Форум » Вселенная S.T.A.L.K.E.R. » S.T.A.L.K.E.R. » По следам Черных Ангелов. Бета-версия. (Тут обсуждаем прохождение бета-версии.)
Страница 12 из 30«1210111213142930»
Поиск: