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 Ссылка на комментарий
AndrewMor 533 Опубликовано 16 Декабря 2016 Поделиться Опубликовано 16 Декабря 2016 Правда, какой-нито простой примерчик с give_talk_message посмотреть бы... Сталкер - наше всё! Ссылка на комментарий
Zander_driver 10348 Опубликовано 17 Декабря 2016 Поделиться Опубликовано 17 Декабря 2016 Совсем обленились... Ну для начала можно было тут прочитать Если мало, вот пример... function Custom_Caption(cap, st, use_icon) --вызов дополнительного сообщения local icon_tip = use_icon or "ui_iconsTotal_esc_blockpost_case_to_trader" local task_texture, task_rect = get_texture_info(icon_tip) local stl = "iconed_trade_info" if st then stl = st end db.actor:give_talk_message(cap, task_texture, task_rect, stl) end Вот такая функция принимает на входе 3 аргумента. 1) текст, что написать 2) (необязательно) шаблон вывода из XML файла "config\ui\talk.xml" или "config\ui\talk_16.xml". Если не указан, ставит iconed_trade_info по умолчанию. 3) (необязательно) выводимая текстура. Если не указано, то берет текстуру ui_iconsTotal_esc_blockpost_case_to_trader 1 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
dPlayer 552 Опубликовано 18 Декабря 2016 Поделиться Опубликовано 18 Декабря 2016 (изменено) Как получить текущий параметр итема в слоте в виде числа? Сравнивать этот параметр с числом получается без проблем: function s1_precondition() local item_in_slot_1 = db.actor:item_in_slot(1) if item_in_slot_1:condition() < 0.3 then return true else return false end end А попытка его получить приводить к вылету: function s1_precondition() local item_in_slot_1 = db.actor:item_in_slot(1) if item_in_slot_1:condition() ~= nil then local item_in_slot_cond = item_in_slot_1:condition else return false end end Изменено 18 Декабря 2016 пользователем dPlayer Самый некомпетентный на форуме. Ссылка на комментарий
Pir@t@s 36 Опубликовано 18 Декабря 2016 Поделиться Опубликовано 18 Декабря 2016 Добавил спальный мешок в Тень Чернобыля 1.0004 ( добавлял так, как написано в этой статье). но теперь ГГ сам по себе время от времени засыпает. Иногда даже во время боя. Как это исправить, подскажите пожалуйста. SoC. Спальный мешок.txt Ссылка на комментарий
naxac 2570 Опубликовано 19 Декабря 2016 Поделиться Опубликовано 19 Декабря 2016 @KURT2013, урок вполне рабочий. Если все сделать по нему, то ГГ в принципе не сможет сам по себе или случайно засыпать, т.к. сон включается только через GUI. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий
UnLoaded 313 Опубликовано 19 Декабря 2016 Поделиться Опубликовано 19 Декабря 2016 (изменено) @dPlayer local item_in_slot_cond = item_in_slot_1:condition тут тоже скобки нужны, т.е. так: local item_in_slot_cond = item_in_slot_1:condition() Изменено 19 Декабря 2016 пользователем UnLoaded 1 Ссылка на комментарий
Х_и_м_и_к 3 Опубликовано 26 Декабря 2016 Поделиться Опубликовано 26 Декабря 2016 (изменено) Всем привет. Нужна помощь в таком вопросе: - Есть нпс заспавненный через альспавн, его здоровье равно - (upd:health = 0.100000001490116). Есть ли способ его вылечить, не давая ему аптечку через диалог! Например с помощью какой нибудь функции... Игра тч 04 чистая. За ранее благодарен. Изменено 26 Декабря 2016 пользователем Х_и_м_и_к Ссылка на комментарий
HellRatz 2913 Опубликовано 26 Декабря 2016 Поделиться Опубликовано 26 Декабря 2016 Такой вопрос вот назрел, можно ли сэмулировать нажатие клавиши? То есть якобы нажимать клавиатуру без участия игрока. GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
Х_и_м_и_к 3 Опубликовано 26 Декабря 2016 Поделиться Опубликовано 26 Декабря 2016 (изменено) Народ может все таки кто нибудь ответит, на пост выше? Как нпс(у) закинуть в рюкзак аптечку(с дальнейшим его исцелением), именно без диалога и выдачи( <action>dialogs.transfer_medkit</action>).. Изменено 26 Декабря 2016 пользователем Х_и_м_и_к Ссылка на комментарий
dsh 3824 Опубликовано 26 Декабря 2016 Поделиться Опубликовано 26 Декабря 2016 @HellRatz,в x-ray extensions есть функции генерации нажатий кнопок. Названий не помню. 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
naxac 2570 Опубликовано 26 Декабря 2016 Поделиться Опубликовано 26 Декабря 2016 (изменено) @HellRatz, из X-Ray Extensions: level.send_event_key_press(dik) - нажатие level.send_event_key_release(dik) - отпускание level.send_event_key_hold(dik) - удержание dik - код клавиши из DIK_keys. @Х_и_м_и_к, если надо просто прибавить здоровья, то нужно сначала получить game_object непися, а потом добавить ему хп. Например, по story_id. local npc = level_object_by_sid(12345) if npc then npc.health = 1 end Изменено 26 Декабря 2016 пользователем naxac 2 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 26 Декабря 2016 Поделиться Опубликовано 26 Декабря 2016 Еще есть и level.send_event_mouse_wheel(vol) - имитация вращения колесика мыши Ссылка на комментарий
Х_и_м_и_к 3 Опубликовано 26 Декабря 2016 Поделиться Опубликовано 26 Декабря 2016 если надо просто прибавить здоровьяСпасибо! То что доктор прописал... Именно это я и спрашивал... Ссылка на комментарий
losiara 13 Опубликовано 28 Декабря 2016 Поделиться Опубликовано 28 Декабря 2016 naxacА если не по СИДу, по профильному имени непися возможно произвести какие то действия с ним??? Или только СИД? Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
naxac 2570 Опубликовано 29 Декабря 2016 Поделиться Опубликовано 29 Декабря 2016 (изменено) @losiara, можно по имени в алл.спавне найти. Если по профилю, то перебирать всех онлайновых нпс и проверять у каждого character_name. Изменено 29 Декабря 2016 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий
losiara 13 Опубликовано 29 Декабря 2016 Поделиться Опубликовано 29 Декабря 2016 (изменено) naxac, без all.spawn, с использованием скриптового НПС. через "spawn_sections.ltx" по типу: [aes_monolit_1]:stalker $spawn = "respawn\aes_monolit_1" character_profile = aes_monolit_1_master ; профиль сделан именно под этого НПС spec_rank = master community = monolith custom_data = scripts\moy_logic\aes_monolit_1.ltx aes_monolit_1 - получаем его имя, спавним через него скриптом непися с отдельным профилем "aes_monolit_1_master" Вот как то так можно по имени с ним работать??? Изменено 29 Декабря 2016 пользователем losiara Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
MegaStalker 66 Опубликовано 1 Января 2017 Поделиться Опубликовано 1 Января 2017 (изменено) Спасайте! Скриптов вообще не знаю, но хочу адаптировать к моду CoC схему дин.аномалий из мода АМК. Вопрос - надо ли мне создавать отдельный скриптовый файл и копировать в него связанную с аномалиями байду из файла amk.scripts(как я понял, отвечающие за спавн аномалий функции)? И есть ли у кого-то в наличии схема из того же АМК, с помощью которой контроллер превращает нормальных сталкеров в зомбированных? Буду очень благодарен, если скинете ее. Ну и напоследок - ходят по всему интернету слухи, будто в АМК научили сталкеров обходить аномалии. Если скинете мне ее и объясните примерно, как с ней ведут себя сталкеры - век не забуду. Изменено 1 Января 2017 пользователем MegaStalker Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда... Ссылка на комментарий
Zander_driver 10348 Опубликовано 3 Января 2017 Поделиться Опубликовано 3 Января 2017 @losiara, У тебя же написано character_profile = aes_monolit_1_master ; профиль сделан именно под этого НПС Значит, можем делать так: function L(profile_name) local a = 1 while a < 65535 do local obj = level.object_by_id(a) if obj and IsStalker(obj) and obj:alive() and obj:profile_name() == profile_name then --// тут любые действия с найденным объектом end a = a + 1 end end Можно вот так, по профилю. Если надо обязательно по имени, то с этим проблем будет больше. При скриптовом спавне имя объекта - это его секция + его айди, т.е. будет что-то вроде такого "aes_monolit_123685" (после первой единицы любые цифры, какие - заранее неизвестно). Айди заранее неизвестен - его только при спавне можно узнать. Если позаботиться о его сохранении где-то, то в принципе можно, но и то работать будет только до тех пор пока нпс никуда не делся. Скриптов вообще не знаю, но хочу адаптировать к моду CoC схему дин.аномалий из мода АМК Оптимистично... Про контроллера смотреть bind_monster.script, насколько я помню. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
MegaStalker 66 Опубликовано 3 Января 2017 Поделиться Опубликовано 3 Января 2017 (изменено) @Zander_driver, я нашел в этом файле что-то, отвечающее за установление неписю группировки зомбированные, но ничего не понял в коде ни до этого, ни после. Можешь вкратце объяснить, за что отвечает код в указанном тобой файле? Стоп, я кажется слегка разобрался. Вот, видимо, функция, которая отвечает за зомбирование. self.chtime=time_global()+2000 if self.object:clsid()==clsid.controller_s and self.object:alive() thenamk.mylog("zombifying")local npc=self.object:get_enemy()if npc thenif npc:id()~=db.actor:id() and npc:clsid()==clsid.script_stalker and self.object:see(npc) andnpc:character_community()~="zombied" and self.object:position():distance_to(npc:position())<30 thenlocal sobj=alife():object( npc:id() )if sobj and sobj.online thenlocal zomb=amk.load_table("zombies")zomb[sobj.id]={master=self.object:id(),comm=npc:character_community(),gw=npc:goodwill(db.actor)}amk.save_table("zombies",zomb)npc:set_character_community("zombied",0,0)local orgtbl=amk.read_stalker_params(sobj)if (not string.find(orgtbl.profile,"_zombi")) thenorgtbl.profile=orgtbl.profile.."_zombi"endamk.mylog("zombied "..npc:name().." profile "..orgtbl.profile)amk.write_stalker_params(orgtbl,sobj)endendendend Я разобрался с видимостью врага, дистанцией до него и т.д. Но я не понимаю, каким боком к этой функции относится время и куда сохраняется зомбирование непися? Ну и самое главное - что такое amk.mylog? Изменено 3 Января 2017 пользователем MegaStalker Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда... Ссылка на комментарий
naxac 2570 Опубликовано 3 Января 2017 Поделиться Опубликовано 3 Января 2017 (изменено) @MegaStalker, self.chtime=time_global()+2000 это интервал между проверками, чтобы не проверять на каждом апдейте: 2 секунды. Данные о зомбированных хранятся в таблице "zombies", в псторе актера. amk.mylog() - это просто вывод в лог для отладки. Изменено 3 Января 2017 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти