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

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

Уважаемые, есть ли у кого опыт совмещения ZeroBrane Studio c библиотеками lua сталкера? т.е. такое вообще возможно?

результат запуска скрипта в студии

Program completed in 28.76 seconds (pid: 4916).
test.lua:15: attempt to call global 'system_ini' (a nil value)
stack traceback:
	test.lua: in main chunk
Ссылка на комментарий

Тут вопрос возник (ТЧ с модом OLR). Пытаемся сделать, чтобы в момент сохранения проверялись координаты всех объектов локации, и если у каких-то объектов координаты совпадут с координатами  заданного объекта (в данном примере это changer_test), то чтобы такие объекты удалялись. Вот такой скрипт подгружаем, но он всегда даёт положительный результат, ничего не удаляя, то есть сравнение не срабатывает.

 

 

 


local changer_test = alife():object("lvl14_stancia_level_changer_0001")  
 
function update()
          if db.actor then
               for i=1,65535 do
                    local gluk_obg = level.object_by_id(i)
                          if gluk_obg ~= nil and gluk_obg:position():distance_to(changer_test)<0.01 then 
                                amk.remove_item(gluk_obg)
                                news_manager.send_tip(db.actor, "Удаляем глючный объект - ОК")
                                log1("Удаляем глючный объект - ОК")
                                break
                         elseif i == 65535 then
                                 news_manager.send_tip(db.actor, "нет глючных объектов")
                         end
                   end
             end
end
 



 

 

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

Кто может подсказать функцию для проверки расстояния от камеры до точки куда целится гг.

Платформа Тень Чернобыля.

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

 

 

функцию для проверки расстояния от камеры до точки куда целится гг.

Дальномер лазерный ? ;)

Поищи, где-то это обсуждалось, и вроде даже отдельной темой.

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

Народ, вопрос: как реализовать на 1.6.хх худ предметов? Юзаешь итем - отыгрывается анима? Заранее спасибо.

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

Второй вопрос: как на СЕ3 сделать инвентори а-ля стлк? Сорсы СЕ3 имеются...

Ссылка на комментарий
Юзаешь итем - отыгрывается анима?

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

Я лично создаю секцию аним-объекта на основе оружия. Ему в draw-анимацию прописываю нужную анимку, прописываем ему какой-нибудь рабочий слот. Дальше используем юз-коллбек в bind_stalker.script. Собственно, нам нужно совершить следующее:

  • Выдать ГГ аним-айтем
  • Поместить айтем в слот (часто используется слот бинокля или болта, тогда приходится сначала временно удалять бинокль/болт)
  • Активизировать слот аним-айтема

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

Кстати, посмотри скрипты этого мода.

Изменено пользователем FantomICW
  • Нравится 3

c57d8f0c86.png

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

@Struck

level.add_cam_effector(string, number, boolean, string
level.add_cam_effector2(string, number, boolean, string, number)

level.add_cam_effector("camera_effects\\surge_02.anm", 10, false, "bind_stalker.anabiotic_callback")

Можешь "лолштокать" дальше  ;)

  • Нравится 4

c57d8f0c86.png

Ссылка на комментарий
@Struck, в данном случае ты слишком придираешься к словам, да, аргумент, а что он обозначает? Делёные точкой модуль и имя функции, которая будет вызвана в конце анимации, или что там у вас. Что это по твоему, если не коллбек на окончание? Что по твоему коллбек? Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

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

@Desertir, какой колбек на окончание? В функцию передается аргумент, никаких колбеков там нет. Не нужно заниматься казуистикой.

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

@Struck, никто же не отрицает, что это аргумент. Но...

Даже @Malandrinus назвал это коллбеком :D :

http://www.amk-team.ru/forum/index.php?showtopic=7450&p=343515

(см. пространство level)

Но ок, не будем опираться на то, что писал @Malandrinus. Смотрим в sr_cutscene.script, пробиваем поиском по "callback":



if not (eff.global_cameffect) then
level.add_cam_effector("camera_effects\\"..eff.anim..".anm", 210408, false, "sr_cutscene.effector_callback")
else
level.add_cam_effector2("camera_effects\\"..eff.anim..".anm", 210408, false, "sr_cutscene.effector_callback", self.st.fov or db.actor:fov()*0.75)
end
sr_cutscene.effector_callback()
self:cutscene_callback()
function action_cutscene:cutscene_callback()

function effector_callback(obj)
xr_logic.issue_event(object_scene, storage_scene, "cutscene_callback")
end

 

 

 

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


 

 

Просто так назвали, наверное. Могли бы назвать сигналом...И, блин, тоже не верно было бы! Сигналы - это же другое:

    const act_end = 128;
    const anim_end = 4;
    const look_end = 2;
    const move_end = 1;
    const object_end = 32;
    const sound_end = 8;
    const time_end = 64;

 

 

Ситуация не из легких, по ходу.

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

 

Разговор тупо "ниочом". Более того, я готов сказать, что этот аргумент - действительно никакой не коллбек (по своей движково-скриптовой сути), который в тех же биндерах используется. Если тебе столь важно выявить единственное истинное наименование, то поздравляю, молодец. Если смысл в том, чтобы ограничить себя в канонах и терминах, тоже поздравляю. 

Моя цель была - намекнуть о системе для аним-айтемов, если что))

class callback {
    const action_animation = 21;
    const action_movement = 18;
    const action_object = 24;
    const action_particle = 23;
    const action_removed = 20;
    const action_sound = 22;
    const action_watch = 19;
    const actor_sleep = 25;
    const article_info = 12;
    const death = 8;
    const helicopter_on_hit = 27;
    const helicopter_on_point = 26;
    const hit = 16;
    const inventory_info = 11;
    const inventory_pda = 10;
    const level_border_enter = 7;
    const level_border_exit = 6;
    const map_location_added = 14;
    const on_item_drop = 29;
    const on_item_take = 28;
    const patrol_path_in_point = 9;
    const script_animation = 30;
    const sound = 17;
    const take_item_from_box = 34;
    const task_state = 13;
    const trade_perform_operation = 3;
    const trade_sell_buy_item = 2;
    const trade_start = 0;
    const trade_stop = 1;
    const trader_global_anim_request = 31;
    const trader_head_anim_request = 32;
    const trader_sound_end = 33;
    const use_object = 15;
    const weapon_no_ammo = 35;
    const zone_enter = 4;
    const zone_exit = 5;
    
};

 

Изменено пользователем FantomICW
  • Нравится 1
  • Согласен 4

c57d8f0c86.png

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

Народ, вопрос: как реализовать на 1.6.хх худ предметов? Юзаешь итем - отыгрывается анима? Заранее спасибо.

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

Второй вопрос: как на СЕ3 сделать инвентори а-ля стлк? Сорсы СЕ3 имеются...

Flash+Action Script,по другому увы никак

Насколько же древняя версия?

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

В очередной раз напоролся на чудесное:

    if sound_theme.theme[info] ~= nil then
        if db.story_by_id[npc:id()] == nil then
            db.story_by_id[npc:id()] = {}
        end
        
        table.insert(db.story_by_id[npc:id()], info)
    end

 

Это в xr_info.script

Он вообще чудесен чуть более, чем полностью, во всех отношениях, но данный фрагмент - особенно.

 

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

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

Обновите ссыль, очь почитать охото.

 

Похоже, его по всему интернету снесли. Кто-то устроил борьбу за аффтырьские права. 8(

Вот здесь смотрите: https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru

dc

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

Всем привет. Подскажите кто знает, как через поршень (в ТЧ) установить ГГ новый параметр скорости восстановления здоровья, или заживления раны, или повысить переносимый вес, и т.п. Спасибо.

 

Ни как. Это не задается через поршни. dc

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

 

 

 

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

@Dennis_Chikin, через предмет в инв. тоже нельзя?

 

Только артом на пояс, либо съеданием аптечек и иже с ними (см. конфиги аптечек), или писать в свойства актора (actor.health = , actor.radiation = и т.д.). Вес - только костюмами.

Читайте уже документацию: куча ссылок везде висит, по всем разделам и темам. dc

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

 

 

 

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

Добрый день, хочу прикрутить спавн монстров к посещению локации. (Спавн происходит в лаборатории х-16 каждый раз при заходе на локацию).

Создаю свой скрипт, называю его kruger.script

--мой спавн монстров
function kruger_super_spawn()
alife():create("m_gigant_jumper_e",vector():set(-50.813457489014,3.4666757583618,-16.220701217651),2039,1535)
alife():create("spider_mini",vector():set(-63.28190612393,11.563755989075,-12.167085647583),1319,1530)
alife():create("vypolzen_red",vector():set(-34.370433807373,11.56409740448,3.0166418552399),3203,1532)
alife():create("zanoza_mut",vector():set(-10.502453804216,1.117949962616,-6.6846594810486),3914,1536)
alife():create("karlik_mut",vector():set(-58.828918457031,-4.121039390564,-23.820091247559),1690,1531)
alife():create("gigant_final_by",vector():set(-58.828918457031,-4.121039390564,-23.820091247559),1690,1531)
alife():create("zombie_hell",vector():set(-58.828918457231,-4.121039390564,-23.820091247559),1690,1531)
alife():create("swampbeast_strong",vector():set(-50.813457489014,3.4666757583618,-16.220701217651),2039,1535)
alife():create("zombie_trup2",vector():set(-50.813457489214,3.4666757583618,-16.220701217651),2039,1535)
alife():create("ghoul_strong",vector():set(-10.502453804016,1.117949962616,-6.6846594810486),3914,1536)
alife():create("zombie_immortal",vector():set(-10.502453804216,1.117949962616,-6.6846594810486),3914,1536)
alife():create("dog_sil_hill",vector():set(-115.49247,21.56357,-30.328390),219,1529)
alife():create("bloodsucker_albinoss",vector():set(-102.81878,21.56417,-30.42200),432,1529)
alife():create("zombie_bloodsucker",vector():set(-91.34848,21.57212,-21.57377),744,1530)
alife():create("bloodsucker_mil",vector():set(30.63223,5.580508,13.53717),4673,1537)
alife():create("bloodsucker_albinoss",vector():set(33.56632,5.58483,-11.035712),4760,1538)
alife():create("zombie_bloodsucker",vector():set(47.4579,5.58542,-1.06534),5391,1538)
alife():create("dog_green",vector():set(82.60298,5.57212,-14.6757),6040,1539)
end

function activate()
if level.name() == "l08_yantar" and not has_alife_info("kruger_super_spawn")then kruger.kruger_super_spawn()
db.actor:give_info_portion("kruger_super_spawn")
end
end

Затем открываю файл bind_stalker.script

и вставляю свою функцию, например здесь.

 

 

  -- $DreamMod  апдейт схемы сна

  if sleep_manager.is_sleep_active() and xr_conditions.actor_dead() then

    xr_logic.issue_event(db.actor, db.storage[db.actor:id()]["ar_sleep"], "update")

  end

  amk.oau_watchdog=198

  -- апдейт погоды

  self.weather_manager:update()

  amk.oau_watchdog=197

  -- апдейт схемы детектора

  self.actor_detector:update()

  amk.oau_watchdog=196 

  --ms_ai.sleep_manager()

  amk.oau_watchdog=195

  -- апдейт звуковой схемы актера

  xr_sound.update_actor()

  kruger.activate()

  amk.oau_watchdog=194

  meceniy_work.set_invisible()

  amk.oau_watchdog=193 

--    meceniy_utils.on_actor_update_callback()

-- by Monnoroch

 

 

Затем в файле info_portions.xml

 

 

<info_portion id="autojump_enabled"></info_portion>

 

            <!--  kostya level  -->

            <info_portion id="peshera_code_door_unlocked"></info_portion>

            <info_portion id="peshera_code_door_unlocked2"></info_portion>

            <info_portion id="peshera_code_door_unlocked3"></info_portion>

            <info_portion id="peshera_code_door_unlocked4"></info_portion>

            <info_portion id="spawn_teleport_exit"></info_portion>

     <info_portion id="spawn_teleport_hospital"></info_portion>

            <info_portion id="krovosos_spawn"></info_portion>

            <info_portion id="krovosos_spawn2"></info_portion>

     <info_portion id="generators_code_door_unlocked"></info_portion>

     <info_portion id="red_forest_open"></info_portion>

            <info_portion id="red_forest_open2"></info_portion>

            <info_portion id="red_polter_spawn"></info_portion>

            <info_portion id="red_krovosos_spawn"></info_portion>

 

        <info_portion id="kruger_super_spawn"></info_portion>

 

</game_information_portions>

 

В результате все замечательно, при заходе на локацию Янтарь, происходит спавн живности в лабе х-16 один раз. Помогите зациклить скрипт.

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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