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 530 Опубликовано 16 Декабря 2016 Поделиться Опубликовано 16 Декабря 2016 Правда, какой-нито простой примерчик с give_talk_message посмотреть бы... Сталкер - наше всё! Ссылка на комментарий
Zander_driver 10 343 Опубликовано 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 533 Опубликовано 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 2 477 Опубликовано 19 Декабря 2016 Поделиться Опубликовано 19 Декабря 2016 @KURT2013, урок вполне рабочий. Если все сделать по нему, то ГГ в принципе не сможет сам по себе или случайно засыпать, т.к. сон включается только через GUI. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
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 2 896 Опубликовано 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 3 824 Опубликовано 26 Декабря 2016 Поделиться Опубликовано 26 Декабря 2016 @HellRatz,в x-ray extensions есть функции генерации нажатий кнопок. Названий не помню. 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
naxac 2 477 Опубликовано 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 Ссылка на комментарий
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 2 477 Опубликовано 29 Декабря 2016 Поделиться Опубликовано 29 Декабря 2016 (изменено) @losiara, можно по имени в алл.спавне найти. Если по профилю, то перебирать всех онлайновых нпс и проверять у каждого character_name. Изменено 29 Декабря 2016 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
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 10 343 Опубликовано 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 2 477 Опубликовано 3 Января 2017 Поделиться Опубликовано 3 Января 2017 (изменено) @MegaStalker, self.chtime=time_global()+2000 это интервал между проверками, чтобы не проверять на каждом апдейте: 2 секунды. Данные о зомбированных хранятся в таблице "zombies", в псторе актера. amk.mylog() - это просто вывод в лог для отладки. Изменено 3 Января 2017 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти