Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
Zander_driver 10 358 Опубликовано 30 Января 2021 Поделиться Опубликовано 30 Января 2021 2 часа назад, Colder сказал(а): она почему то не горит а маргает Наверное, потому что аномалий на локации много? Одни ближе 10 метров, другие дальше. Одни статик включают, а другие выключают. По несколько раз за апдейт. 1 Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367131
AndreySol 215 Опубликовано 31 Января 2021 Поделиться Опубликовано 31 Января 2021 Спрошу тута: в мультиплеере ЗП, скриптовая подсистема не работает совсем, или работает, но ограниченно? К примеру рестриктор можно поставить и прописать ему логику? Или дверь, соответственно, то же с логикой? И есть ли где нибудь, на репозиториях, сборки движка с попытками оживить скрипты в мультике? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367328
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Скрытый текст function treasure_take_item() local veroyatnos_podriva = 0.2 --// вероятность подрыва по умолчанию local location = level.name() local sila_podriva = 0.3 --// сила подрыва по умолчанию local be_or_not_to_be --// не трогать if location == "l01_escape" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end if location == "l02_garbage" then veroyatnos_podriva = 0.15 sila_podriva = 0.4 end if location == "l03_agroprom" then veroyatnos_podriva = 0.15 sila_podriva = 0.4 end if location == "l03u_agr_underground" then veroyatnos_podriva = 0.35 sila_podriva = 0.6 end if location == "l04_darkvalley" then veroyatnos_podriva = 0.25 sila_podriva = 0.4 end if location == "l04u_LabX18" then veroyatnos_podriva = 0.25 sila_podriva = 0.6 end if location == "05_bar" then veroyatnos_podriva = 0.25 sila_podriva = 0.4 end if location == "l06_rostok" then veroyatnos_podriva = 0.35 sila_podriva = 0.4 end if location == "l08_yantar" then veroyatnos_podriva = 0.35 sila_podriva = 0.4 end if location == "l08u_brainlab" then veroyatnos_podriva = 0.3 sila_podriva = 0.5 end if location == "l07_military" then veroyatnos_podriva = 0.35 sila_podriva = 0.4 end if location == "l10_radar" then veroyatnos_podriva = 0.3 sila_podriva = 0.4 end if location == "l11_pripyat" then veroyatnos_podriva = 0.35 sila_podriva = 0.4 end if location == "l12_stancia" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end if location == "l12_stancia_2" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end if location == "l12u_control_monolith" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end if location == "l12u_sarcofag" then veroyatnos_podriva = 0.1 sila_podriva = 0.4 end --// Снижаем шанс подрыва если есть кусачки if db.actor:object("kysazki") ~= nil then veroyatnos_podriva = veroyatnos_podriva - 0.1 end be_or_not_to_be = math.random(0,100) if be_or_not_to_be < veroyatnos_podriva * 100 then local lv,gv local a = vector() local radius = math.random(0,4) a = db.actor:position() a.x = a.x + radius a.z = a.z + radius a.y = a.y + math.random(0,1) lv = db.actor:level_vertex_id() gv = db.actor:game_vertex_id() local h2 = hit() h2.power = sila_podriva h2.direction = vector():set(0,0,0) h2.type = hit.explosion h2.impulse = 1 h2.draftsman = db.actor db.actor:hit(h2) sound_object("weapons\\mine_1"):play_at_pos(db.actor,vector():set(0,0,0),0,sound_object.s2d) particles_object("explosions\\explosion_mine"):play_at_pos(vector():set(a.x,a.y,a.z),lv,gv,65535) end end Всем привет! Есть функция на заминирование тайников! Проблема в том что, минируються не только тайники но и РЮКЗАК ДЛЯ ЗАКЛАДКИ СВОЕГО ТАЙНИКА! Можно ли как то заблочить функцию что бы она работала только с уже имеющими тайниками а не которые делает гг сам! Заранее спасибо! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367498
AndreySol 215 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 @Colder Смотреть, естественно, надо там, откуда эта ф-ция вызывается, а сама она только хит формирует. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367570
gam 118 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 1 час назад, AndreySol сказал(а): там, откуда эта ф-ция вызывается Имхо это хит-саллбек. А как сделанно не ведаю. Если есть возможность в виде любой модификации - либо отдельно, дайте ссылку на рабочий файл. К сожалению, на данный момент я могу использовать для скачивания майл и ограниченно народ Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367595
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 (изменено) @AndreySol Вызываеться из treasure_manager function take_item_from_box(box, box_story_id) printf("!!! take item from box %s", tostring(box:is_inv_box_empty())) if box:is_inv_box_empty() == true then get_treasure_manager():treasure_empty(box, box_story_id) end axr_treasure.treasure_take_item() --// сама функция end Скрытый текст function take_item_from_box(box, box_story_id) printf("!!! take item from box %s", tostring(box:is_inv_box_empty())) if box:is_inv_box_empty() == true then get_treasure_manager():treasure_empty(box, box_story_id) local box_name = box:name() printf("-"..box_name) if (math.random() < 0.75) then axr_sounds.play_sound([[weapons\generic_checkout]]) mine_box = box mine_timer = time_global()+3000 end end end function actor_on_update() if (mine_timer) and (mine_timer < time_global()) then local blow_particle = particles_object("explosions\\explosion_mine") blow_particle:play_at_pos(mine_box:position()) local h = hit() h.type = hit.explosion h:bone("bip01_spine") h.power = 1 h.impulse = 2 h.direction = vector():set(0,0,1) h.draftsman = db.actor if db.actor:position():distance_to(mine_box:position()) < 3 then db.actor:hit(h) end mine_timer = nil mine_box = nil end end Сделал проще! Все это влежит в treasure_manager. Но эффект тот же. Закладываю свой тайник И ОН ТОЖЕ БАХАЕТ! Изменено 1 Февраля 2021 пользователем Colder Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367596
gam 118 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 40 минут назад, Colder сказал(а): function take_item_from_box(box, box_story_id) printf("!!! take item from box %s", tostring(box:is_inv_box_empty())) if box:is_inv_box_empty() == true then get_treasure_manager():treasure_empty(box, box_story_id) local box_name = box:name() printf("-"..box_name) if (math.random() < 0.75) then axr_sounds.play_sound([[weapons\generic_checkout]]) mine_box = box mine_timer = time_global()+3000 end end end function actor_on_update() if (mine_timer) and (mine_timer < time_global()) then local blow_particle = particles_object("explosions\\explosion_mine") blow_particle:play_at_pos(mine_box:position()) local h = hit() h.type = hit.explosion h:bone("bip01_spine") h.power = 1 h.impulse = 2 h.direction = vector():set(0,0,1) h.draftsman = db.actor if db.actor:position():distance_to(mine_box:position()) < 3 then db.actor:hit(h) end mine_timer = nil mine_box = nil end end Жалкий кусок кода. Как нить Вашу конверсию плиз. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367605
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Можно ещё раз? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367607
gam 118 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Только что, gam сказал(а): axr_sounds.play_sound([[weapons\generic_checkout]]) хоть отселя. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367608
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Я не понимаю что ты пишешь. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367609
gam 118 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 @Colder Я попробовал сказать выше. Нет возможности полноценно использовать интернет. Поделитесь тем, что Вы использовали в своих наработках. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367611
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 (изменено) сейчас https://yadi.sk/d/KSdvyhfZwD7I7Q Изменено 1 Февраля 2021 пользователем Colder Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367612
ARTLantist 16 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Не знаю, в ту ли тему я обращаюсь, поэтому заранее извините. Как сделать черный экран вначале игры и постепенно убрать его (типо гг открывает глаза). Всю катсцену сделал, всё работает идеально, но на счёт затемнения нигде не могу найти инфу Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367617
gam 118 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 @ColderЖелательно скрипт\ конфиг папки с которыми Вы работаете. @Colder function CTreasure:__init() local community = parse_names(utils.cfg_get_string(self.ini, id, "community", nil, false, "", "stalker, bandit, dolg, freedom")) К сожалению нечем оперировать, но возможно некой фракции не хватает? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367621
Colder 12 Опубликовано 1 Февраля 2021 Поделиться Опубликовано 1 Февраля 2021 Это оригинальный файл! Там только функция добавлена и все! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367624
Voland-Li 117 Опубликовано 2 Февраля 2021 Поделиться Опубликовано 2 Февраля 2021 Доброго времени! Задался вопросом, чтобы ставить мины противопехотные и/или противопехотные усиленные (при наличии их в рюкзаке) по направлению взгляда спереди. За основу взял key_handlers.script из правки на установку турели "Тайфун" Стрелка по направлению взгляда без выхода в меню по ESC (если не ошибаюсь от слава70). Там присутствует следующее: Скрытый текст [DIK_keys.DIK_NUMPAD4]={ func=function() local dir = db.actor:direction() local turret_fast = db.actor:object("strelok_turret") if turret_fast then amk.remove_item(turret_fast) local ap = db.actor:position() local lv = db.actor:level_vertex_id() local gv = db.actor:game_vertex_id() local turret = create_car("turret_to_strelok",xyz(ap.x+dir.x, ap.y, ap.z+dir.z), lv, gv, "scripts\\technics\\strelok_turret.ltx") --спереди map_spot(turret.id, "red_location", "Моя туррель") else meceniy_in_hell.horror_sound() end end }, Сделал примерно следующее: (bomba_mina_n - противопехотная, bomba_mina_b - противопехотная усиленная. Тут только пока про простую речь. Допилить на оба типа потом нет проблема.) Скрытый текст [DIK_keys.DIK_NUMPAD9]={ func=function() local dir = db.actor:direction() local bomb_fast_n = db.actor:object("bomba_mina_n") if bomb_fast_n then amk.remove_item(bomb_fast_n) local ap = db.actor:position() local lv = db.actor:level_vertex_id() local gv = db.actor:game_vertex_id() local turret = create_car("bomba_mina_n",xyz(ap.x+dir.x, ap.y, ap.z+dir.z), lv, gv, "") --спереди else meceniy_in_hell.horror_sound() end end }, Так вот, что-то не фурычит... Можешь тыкнуть пальцем что не так делаю? ЗЫ: указание на файл "scripts\\technics\\strelok_turret.ltx" убрал т.к. ИМХО для бомбы оно не к чему... ЗЫЗЫ: что-то редактирование сообщения тут не нашел... Вот автор вышеупомянутой правки @слава70. Страшно смотреть, как на жестком диске прямо на глазах уменьшается место. Но еще страшнее смотреть, когда оно прямо на глазах увеличивается. Вангую. Скоро попросят правку:"Меченый появляется на Кордоне. Телепорт к Монолиту. Загадывает Желание. THE END." Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367635
Zander_driver 10 358 Опубликовано 2 Февраля 2021 Поделиться Опубликовано 2 Февраля 2021 Только что, Voland-Li сказал(а): local turret = create_car Полагаю, причина где-то тут Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367636
Voland-Li 117 Опубликовано 2 Февраля 2021 Поделиться Опубликовано 2 Февраля 2021 @Zander_driver мм... ну да... Упустил этот момент... Но в принципе переменная то локальная, пофигу ж как она там называется? local bomb_fast_n = create_car("bomba_mina_n",xyz(ap.x+dir.x, ap.y, ap.z+dir.z), lv, gv, "") --спереди Так чтоль? Или вы имеете в виду, что не create_car а create ? Ах, да... Реакции НОЛЬ на нажатие НУМПАД9... 1 час назад, Voland-Li сказал(а): local bomb = create_car( вот так точнее. Страшно смотреть, как на жестком диске прямо на глазах уменьшается место. Но еще страшнее смотреть, когда оно прямо на глазах увеличивается. Вангую. Скоро попросят правку:"Меченый появляется на Кордоне. Телепорт к Монолиту. Загадывает Желание. THE END." Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367637
AndreySol 215 Опубликовано 2 Февраля 2021 Поделиться Опубликовано 2 Февраля 2021 @Voland-Li Вы серьезно думаете, что ф-ция create_car может заспавнить любой объект? Мины, в ТЧ к примеру - это аномалии. Соответственно, надо создать объект, затем заполнить его нет-пакет необходимыми данными. А по названию ф-ции можно догадаться, что она спавнит что-то связанное с транспортом. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367646
Voland-Li 117 Опубликовано 2 Февраля 2021 Поделиться Опубликовано 2 Февраля 2021 @AndreySol понял... просто спавном не занимался ни разу... как говориться на новые грабли наступаю... За наводку спасибо. ЗЫ: а на счет нулевой реакции на клавишу не подскажете ничего? Страшно смотреть, как на жестком диске прямо на глазах уменьшается место. Но еще страшнее смотреть, когда оно прямо на глазах увеличивается. Вангую. Скоро попросят правку:"Меченый появляется на Кордоне. Телепорт к Монолиту. Загадывает Желание. THE END." Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/543/#findComment-1367661
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти