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

Скриптование


Svoboда

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

44 минуты назад, Dennis_Chikin сказал:

Опять же, hp_state, hp_state_see, чтоб не орал.

Проще заглушки на звуковые файлы воткнуть....

Сталкер - наше всё!

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


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

Так тогда все раненые перестанут орать))

Ну да, перестанут. Орать в Зоне, оказавшись раненым - себе дороже. Еще придет кто-нито на обед :)

Сталкер - наше всё!

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


Ссылка на сообщение
3 часа назад, Fenrir02 сказал:

Не подскажите как сделать убор оружия при обыске мёртвых неписей/монстров/тайников? Не могу понять каким скриптом вызвать действия при обыске перечисленных предметов.

ИМХО, нужно отслеживать выдачу/забирание инфопоршенов при обыске трупа/тайника. Не помню, как они правильно называются.

Сталкер - наше всё!

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


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

Вдруг у кого-то есть объяснение этому феномену?

Полагаю, что файл из ЗП нужно сначала было переделать для ТЧ (в ЗП весь звук - стерео). Должен воспроизводиться звук сна ГГ, файл не читался движком наверно из-за этого и висло.

Сталкер - наше всё!

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


Ссылка на сообщение
В 22.07.2018 в 15:55, gam сказал:

Это файл из чистой ТЧ. Все работает хотя бы на на этом примере:

В том посте написано: "Данный звуковой файл брал из Зов Припяти". Потому и предположил, что в ЗП звук стерео. А то, что при удалении данного файла все стало работать, прямо об этом говорит. Ибо звук стал читаться из запакованных db-файлов.

Сталкер - наше всё!

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


Ссылка на сообщение
1 час назад, Дмитрий Зверев сказал:

В оригинальной ТЧ есть момент, когда ГГ подходит к Кузнецову

Я в своем моде делал бандитов и легко с ними мог говорить, даже если они враги (а так и было). Вроде в логике все прописывается.

Сталкер - наше всё!

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


Ссылка на сообщение
11 минут назад, Баба ЯГА сказал:

я тут учу Lua ->

Полезно. Но почему я на функции, модули, операторы (выше по списку) не могу перейти?

Сталкер - наше всё!

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


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

@Баба ЯГА, А ларчик просто открывался. Как всегда, все гениальное лежит на самом виду, спасибо.

  • Согласен 1

Сталкер - наше всё!

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


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

Так вот, там многих, так сказать, бочек с кострами нету. Каким образом можно получить название лагеря? Надеюсь правильно вопрос задал.

 

Думаю, надо изменить код так, чтобы название смарт-террейна вообще не фигурировало в скрипте. Указывать только 

 

flame = "zone_flame_small_0001", light = "lights_camp_fire_omni_r1_r2_0001", а их названия взять из распакованного спавна.

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

Сталкер - наше всё!

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


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

Всем привет, возник вопрос.

Спавню скриптово аномалии (всякие Жарки, Электры и прочие).

Код спавна:

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

           local obj = alife():create(section, pos, lv, gv)
           local rad_new_anom = math.random(2,4)
           create_anom(obj, rad_new_anom, "anom_on)  

 

function create_anom(p_obj, rad_anom, mode)

    local packet = net_packet()

    p_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_s32()
    local level_vertex_id = packet:r_s32()
    local object_flags = packet:r_s32()
    local custom_data = packet:r_stringZ()
    local story_id = packet:r_s32()
    local cse_alife_object__unk3_u32 = packet:r_s32()

    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 box = packet:r_matrix()
        end
    end

    local restrictor_type = packet:r_u8()

    local cse_alife_custom_zone__unk1_f32 = packet:r_float()
    local cse_alife_custom_zone__unk2_u32 = packet:ru8( _s32()

    local on_off_mode_enabled_time = packet:r_s32()
    local on_off_mode_disabled_time = packet:r_s32()
    local on_off_mode_shift_time = packet:r_s32()

    local offline_interactive_radius = packet:r_float()
    local artefact_spawn_places_count = packet:r_u16()
    local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32()

    local last_spawn_time_present = packet:r_u8()

    if packet:r_elapsed() ~= 0 then abort("left=%d", packet:r_elapsed()) end

    packet:w_u16(game_vertex_id)
    packet:w_float(cse_alife_object__unk1_f32)
    packet:w_s32(cse_alife_object__unk2_u32)
    packet:w_s32(level_vertex_id)
    packet:w_s32(object_flags)
    if mode~=nil then custom_data = mode end
    packet:w_stringZ(custom_data)
    packet:w_s32(story_id)
    packet:w_s32(cse_alife_object__unk3_u32)

    packet:w_u8(1)
    packet:w_u8(0)
    local sphere_center = vector()
    sphere_center:set(0, 0, 0)
    packet:w_vec3(sphere_center)
    radius = rad_anom
    packet:w_float(radius)

    packet:w_u8(restrictor_type)

    packet:w_float(cse_alife_custom_zone__unk1_f32)
    cse_alife_custom_zone__unk2_u32 = bit_not(0)
    packet:w_s32(cse_alife_custom_zone__unk2_u32)
    packet:w_s32(on_off_mode_enabled_time)
    packet:w_s32(on_off_mode_disabled_time)
    packet:w_s32(on_off_mode_shift_time)

    packet:w_float(offline_interactive_radius)
    packet:w_u16(artefact_spawn_places_count)
    packet:w_s32(cse_alife_anomalous_zone__unk1_u32)

    packet:w_u8(last_spawn_time_present)

    p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell())
    return p_obj
end

Все прекрасно спавнится ( в данном случае в Предбаннике). Но когда дело доходит до радиации, начинается фигня. Радиация спавнится, но почему-то не в Предбаннике, а где-то между Кордоном и Болотами. См. скрин

339eec7202cfd99049fb4ccb289d403250466f34

 

Вот в чем здесь причина? Или Радиацию надо как-то по-другому спавнить?

 

upd: пробовал спавнить аномалии на Свалке - все то же самое. Аномалии спавнятся на Свалке, радиация - между Кордоном и Болотами.

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

Сталкер - наше всё!

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


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

 

@naxac, Попробовал для начала вот это:

 

Нужно сначала поставить чтение пакета на начало:

packet:r_seek(0)

 

Радиация спавнится по нужным координатам, но все без исключения аномалии перестают наносить урон. Спавнятся, на детекторе видны, но - пустышки.

А вот конструкции

 

if not packet:r_eof() then

    last_spawn_time_present = packet:r_u8()

end

...

if last_spawn_time_present then

    packet:w_u8(last_spawn_time_present)

end

 

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

Изменено пользователем AndrewMor
  • Полезно 1

Сталкер - наше всё!

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


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

@AndreySol, Я нашел уже готовый скрипт спавна аномалий. Вот и подумал, а почему бы и Радиацию рандомно не спавнить? А про модуль Артоса читал в свое время, но ничего тогда не понял :)

Сталкер - наше всё!

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


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

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

Давно уже читал, но на тот момент не разбирался. А сейчас видать настал сей момент, когда все ж таки придется разбираться. Всему свое время, походу, мое время само ко мне пришло...

Сталкер - наше всё!

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


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

@aka_sektor, попробуй так:

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

        if not has_alife_info("твой инфо") then
         for a=10,65535,1 do
          local obj=alife():object(a)
          if obj and string.find(obj:name(),"trader_zone_task") then
           alife():release(obj,true)
          end
         end
         db.actor:give_info_portion("твой инфо")
        end    

 

Сталкер - наше всё!

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


Ссылка на сообщение
3 часа назад, AndreySol сказал:

В радиусе 150м от ГГ.

Правильнее сказать, в радиусе А-лайфа, он может быть другим.

Сталкер - наше всё!

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


Ссылка на сообщение
11 часов назад, Баба ЯГА сказал:

Как отправить скриптово НПС из точки А в точку Б, допустим, даже на пару метров от того места где он находится, это вообще возможно?..

В нужный момент выдать инфо, а дальше прописать нужное действие в логике НПС (переход в секцию логики по выдаче инфо).

Сталкер - наше всё!

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


Ссылка на сообщение
В 16.01.2020 в 17:33, _Sk8_AsTeR_ сказал:

@Kirgudu, а какая симптоматика при  переполнении нет пакетов? Битые сейвы, или ещё чего? 

Чаще всего вылеты при загрузке сейва с руганью на несуществующую секцию, что-то типа "ac" или нечто подобное.

  • Спасибо 1

Сталкер - наше всё!

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


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

@Norman Eisenherz, Я всегда, кстати, думал, где, как и почему выдается сообщение, логику копал. А дело-то в рестрикторе.

Сталкер - наше всё!

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


Ссылка на сообщение
03.04.2020 в 02:32, Norman Eisenherz сказал:

Есть ли какой-то фикс для меток, которые остаются после сюжетных заданий (АТП, X-16, РГ-6)?

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

 

Добавлю: та еще мутота, но все решаемо. В частности, по РГ-6 долго не мог добиться результата, в итоге все ж  сделал. Но где и что правил - увы, не помню.

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

Сталкер - наше всё!

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


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

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