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

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


Halford

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

Вопрос к профи, академический.

Дано: некий набор "настроечных" переменных. Возможное место инициализации (условно):

1. game_option.script (в скрипте)

2. gаme_option.ltx ( в конфиге)

Есть ли какая-либо существенная разница между 1/2 при считывании с т.з. быстродействия/нагрузки или всё укладывается в пределы статистической погрешности?

T.e. как всё-таки лучше делать?

 

 

Поделиться этим сообщением


Ссылка на сообщение

@AndreySol , правильно уловил нюанс: в отличии от содержимого .ltx (с инклудом в system), которое считывается единожды при "холодном старте" (запуске игры)?

  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение

@kenguru , "классика жанра" :biggrin:

db.actor.health = -dh
--dh - дельта здоровья за один тик.

@Olamawai, гранаты, НПС, чистый ТЧ... От нас что-то скрывают! :biggrin:

Изменено пользователем Купер
  • Спасибо 1
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

X-Ray extensions.

Движковый вылет в процессе диалога:

stack trace:

001B:0076105B xrLUA.dll
001B:0396ED92 xrGame.dll
001B:0393BAAC xrGame.dll

Это оно,  или?

 

  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

Други, надоумьте. Что-то подзабылось.

1. Логика прожектора штатно поддерживает возможность вкл/выкл?

2. Направление, куда посмотреть в плане реализации, откуда можно добропорядочно слямзить?

Откровенно говоря, лениво разбираться с велосипедами.:t1807:

 

 

  • Полезно 1

Поделиться этим сообщением


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

 

"...В более старых движках, потребуется читать нетпакет объекта"

Вот, справедливости ради.

X-Ray Extensions:

        if obj.get_visual_name then
            visual_name = obj:get_visual_name()
        end

Вполне себе мирно существует. Зачем обижать почтенную классику?

 

 

  • Нравится 2

Поделиться этим сообщением


Ссылка на сообщение
19 часов назад, UriZzz сказал:

Мож что в x-ray ext есть???

@UriZzz, heal_wounds(float).

@DarkSnowder , отрицательный хит попробовать? Хотя, далеко не факт...

Поделиться этим сообщением


Ссылка на сообщение

X-Ray Extensions.

При переходе между конкретными локациями движок крашит:

Скрытый текст

stack trace:
0023:05355AF0 xrGame.dll
0023:00423CF5 XR_3DA.exe, IInputReceiver::IR_OnDeactivate()
0023:76B25DAA USER32.dll
0023:76B25487 USER32.dll
0023:76B11F8B USER32.dll
0023:757D9259 d3d9.dll
0023:76B2EDEB USER32.dll
0023:76B25DAA USER32.dll
0023:76B259AA USER32.dll
0023:76B2956F USER32.dll
0023:77BA4E7D ntdll.dll
0023:00DC8728 BugTrap.dll
0023:00DC6BDB BugTrap.dll, BT_MakeSnapshot()
0023:00DC6C25 BugTrap.dll, BT_SehFilter()
0023:779BEA92 KERNELBASE.dll
0023:77BD4883 ntdll.dll
0023:77B97A4E ntdll.dll
[error][    1400]    : Недопустимый дескриптор окна.

Никто не сталкивался? В какую сторону пробовать копать?

  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

Отнюдь. Это те, которые конкретные.

 

Поучусь, пожалуй, правильно формулировать вопросы. Net_packet level_changer-а:

Скрытый текст

 

function create_level_changer(p_story_id, p_position, p_lvertex_id, p_gvertex_id, p_dest_lv, p_dest_gv, p_dest_pos, p_dest_dir, p_dest_level, p_silent)
    local obj = alife():create("level_changer", p_position, p_lvertex_id, p_gvertex_id)
    --level.map_add_object_spot(obj.id, "level_changer", "")
    local packet = net_packet()
    obj:STATE_Write(packet)
    local game_vertex_id = packet:r_u16()
    local cse_alife_object__unk1_f32 = packet:r_float()
    local cse_alife_object__unk2_u32 = packet:r_u32()
    local level_vertex_id = packet:r_u32()
    local object_flags = packet:r_u32()
    local custom_data = packet:r_stringZ()
    local story_id = packet:r_u32()
    local spawn_story_id = packet:r_u32()
    local shape_count = packet:r_u8()
    for i=1,shape_count do
    local shape_type = packet:r_u8()
    if shape_type == 0 then
    local center = packet:r_vec3()
    local radius = packet:r_float()
    else
    local axis_x_x = packet:r_float()
    local axis_x_y = packet:r_float()
    local axis_x_z = packet:r_float()
    local axis_y_x = packet:r_float()
    local axis_y_y = packet:r_float()
    local axis_y_z = packet:r_float()
    local axis_z_x = packet:r_float()
    local axis_z_y = packet:r_float()
    local axis_z_z = packet:r_float()
    local offset_x = packet:r_float()
    local offset_y = packet:r_float()
    local offset_z = packet:r_float()
    end
    end
    local restrictor_type = packet:r_u8()
    local dest_game_vertex_id = packet:r_u16() 
    local dest_level_vertex_id = packet:r_u32() 
    local dest_position = packet:r_vec3()
    local dest_direction = packet:r_vec3()
    local dest_level_name = packet:r_stringZ()
    local dest_graph_point = packet:r_stringZ()
    local silent_mode = packet:r_u8()
    packet:w_begin(game_vertex_id)
    packet:w_float(cse_alife_object__unk1_f32)
    packet:w_u32(cse_alife_object__unk2_u32) 
    packet:w_u32(level_vertex_id)
    packet:w_u32(bit_not(193))
    packet:w_stringZ(custom_data)
    packet:w_u32(p_story_id)
    packet:w_u32(spawn_story_id)
    packet:w_u8(1)
    packet:w_u8(1)
    packet:w_float(2)
    packet:w_float(0)
    packet:w_float(0)
    packet:w_float(0)
    packet:w_float(4)
    packet:w_float(0)
    packet:w_float(0)
    packet:w_float(0)
    packet:w_float(4)
    packet:w_float(0)
    packet:w_float(0)
    packet:w_float(0)
    packet:w_u8(3)
    packet:w_u16(p_dest_gv)
    packet:w_u32(p_dest_lv)
    packet:w_vec3(p_dest_pos)
    packet:w_vec3(p_dest_dir)
    packet:w_stringZ(p_dest_level)
    packet:w_stringZ("start_actor_99")
    packet:w_u8(p_silent)
    packet:r_seek(0)
    obj:STATE_Read(packet, packet:w_tell())
end

 

Вызывается:

Скрытый текст

 

function level_to_level_dest()
   create_level_changer(story_id, vector():set(x, y, z),  l_vid, g_vid,
   l_vid_dest, g_vid_dest, vector():set(x, y, z),vector():set(x, y, z),"level_name_dest", silent_mode)
end

 

При установке silent_mode = 1

Скрытый текст

 

stack trace:

001B:03BE5AF0 xrGame.dll

001B:00423CF5 XR_3DA.exe, IInputReceiver::IR_OnDeactivate()

001B:00412076 XR_3DA.exe, CApplication::OnEvent()

001B:004BAE80 XR_3DA.exe, CEvent::Signal()

[error][     183]    : Невозможно создать файл, так как он уже существует.

 

При размещении в all.spawn - лог выше.

 

Мда, и менторы притихли... Какая незадача.

Переход с добавленной локации на стандартную.

 

Изменено пользователем Купер

Поделиться этим сообщением


Ссылка на сообщение

@КрИвОй БоБ тут и дальше. Общий принцип. Кто-то из разработчиков во времена оны выкладывал. Не факт, что для актуального патча, но принцип понятен: ACDC НС-16.

  • Полезно 3

Поделиться этим сообщением


Ссылка на сообщение

@mmindwork , именно скриптовый? В движок OGSR добавлена консольная команда:

jump_to_level <level_name> -- быстрый переход на нужный уровень.

Не настолько удобно по сравнению со скриптовыми реализациями, но в качестве "эрзаца", не требующего адаптации - вполне. тынц

 

  • Спасибо 1
  • Согласен 1
  • Полезно 2

Поделиться этим сообщением


Ссылка на сообщение

@I am Dead , да были, конечно. Просто для "местных условий" Солянки адаптация может оказаться весьма затратным делом. В общем, в зависимости от задач.

@mmindwork тут и дальшетут посмотри.

Поделиться этим сообщением


Ссылка на сообщение

1. Заспаунить прибор в инвентарь протагониста любым известным способом (скрипт, диалог, etc...)

2. Поместить прибор в слот.

3. Нажать клавишу активации соответствующего слота.

4. Потыкать по нужным вкладкам,кнопочкам и чекбоксам  в открывшемся GUI прибора.

 

Товарищи сталкеры, просветите на предмет следующего:

У живых объектов (сталкеры, мутанты, гг) присутствует параметр morale, который используется в связке с panic_threshold для переключения в режим паники и обратно (насколько знаю).

А какова механика расчёта morale? Т.е., какие факторы при этом учитываются, с каким приоритетом и т.п.

 

 

 

 

Изменено пользователем Купер

Поделиться этим сообщением


Ссылка на сообщение

@I am Dead , вот шут его знает, поэтому и полез спрашивать:biggrin:. panic_threshold, по крайней мере, вроде как работает, значит с чем-то должен сравниваться. А с чем?

Поделиться этим сообщением


Ссылка на сообщение

@Капрал Хикс , оно, по идее, в релизе здесь зашито:

encyclopedia_item.xml ->

   <encyclopedia_wnd>
             <image x="170" y="0" width="5" height="5" stretch="1"/>
    </encyclopedia_wnd>

Т.е. как-то исхитриться текстуру с обводкой добавить.

Изменено пользователем Купер
  • Нравится 1
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

@SloYka ,

...

section_name = level_changer
name = exit_escape_01 и, соответственно exit_escape_02 

...
END
story_id = X <- тут

 

Изменено пользователем Купер

Поделиться этим сообщением


Ссылка на сообщение

@SloYka , story_id = 98 - вот это число должно быть уникальным. Нигде дубликатов нет?

Поделиться этим сообщением


Ссылка на сообщение

@SloYka , level.spawn в студию. Не секретный, чай. Кто-нибудь окинет свежим взлядом, глядишь, что и посоветует толковое. Гадать можно очень долго.

  • Согласен 2

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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