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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

 

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

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/

Уважаемые, есть ли у кого опыт совмещения 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

 

 

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

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

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

@dimka02, X-Ray Extensions, функция level.get_target_dist().

Изменено пользователем Kirgudu
  • Спасибо 1

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

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

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

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

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

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

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

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

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

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

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

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

ТЧ 1.0004. SAP и Trans mod

github

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

Народ, вопрос: как реализовать на 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

 

 

 

@Pro100The-Best, 

Такое руководство подойдет?

https://yadi.sk/d/wzSTaTNVh8Eeb

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

@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 пользователей

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