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/
mdm64 586 Опубликовано 19 Августа 2020 Поделиться Опубликовано 19 Августа 2020 @Expropriator, Точно! совсем упустил из виду! А по двойным скобкам - может ли это быть связано с тем, что автор добавлял в мод новые анимации для НПС, но на стандартных мешах? Может, извратился как и потому поставил эти скобки? Возможно или нет? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345542
AndrewMor 533 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 8 часов назад, mdm64 сказал: я не об этом, это понятно, я про двойные скобки. Что-то не увидел я двойных скобок. Кавычки - это да. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345564
mdm64 586 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 @AndrewMor, Ну да, конечно, кавычки, оговорился. Но думается, по написанию и так понятно... 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345588
Muzafir 19 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 Помогите новичку. Хочу выдать задание ГГ сразу после появления на локации. Вот так выглядит у меня ф-ия actor_binder:net_spawn(data) function actor_binder:net_spawn(data) printf("actor net spawn") level.show_indicators() self.bCheckStart = true self.weapon_hide = false -- спрятано или нет оружие при разговоре. weapon_hide = false -- устанавливаем глобальный дефолтовый флаг. if object_binder.net_spawn(self,data) == false then return false end db.add_actor(self.object) if self.st.disable_input_time == nil then level.enable_input() end self.weather_manager:reset() -- game_stats.initialize () if(actor_stats.add_to_ranking~=nil)then actor_stats.add_to_ranking(self.object:id()) end --' Загружаем настройки дропа death_manager.init_drop_settings() if (level.name() == "simeiz") and not has_alife_info("keep_base_defend_started") then self.object:give_info_portion("keep_base_defend_started") end return true end Как видно, свой код я вставил перед return'ом, но ничего не происходит. Задание не выдается. Название инфопорции и локации перепроверил - все верно Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345688
_g.script 3 658 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 16 минут назад, Muzafir сказал: function actor_binder:net_spawn(data) В ф-ию actor_binder:update(delta) что-то типа Скрытый текст if not has_alife_info("garbage_start_info") and (level.name()=="l02_garbage") then self.object:give_info_portion("garbage_start_info") end 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345696
Muzafir 19 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 Пробовал только что. Получаю вылет без лога Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345701
UriZzz 1 004 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 @Muzafir, а что за локация "simeiz"? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345704
Zander_driver 10 348 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 Только что, mole venomous сказал: В ф-ию actor_binder:update Нет. Вход на локацию детектится через нет_спавн. А не через апдейт. 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345706
Muzafir 19 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 (изменено) 7 минут назад, UriZzz сказал: @Muzafir, а что за локация "simeiz"? Локация моя. Недавно допилил графику. Хочу немного "оживить" перед релизом. Чтобы интереснее было изучать, если кто-то захочет глянуть. Кстати, все заработало через функцию delta. Обычного звука получения задания нет, но задание в ПДА появляется. Через нет_спавн почему-то не получалось. Изменено 20 Августа 2020 пользователем Muzafir 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345709
dsh 3 824 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 (изменено) 39 minutes ago, Muzafir said: self.object:give_info_portion("keep_base_defend_started") task добавил в этот поршень? 39 minutes ago, Muzafir said: Название инфопорции и локации перепроверил - все верно А выдачу поршня проверил? Первое же дело, посмотреть после этого, что возвращает db.actor:has_info(). И внутрь if-а еще вывод в лог поставить, что бы уж окончательно убедиться. Изменено 20 Августа 2020 пользователем dsh 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345710
Muzafir 19 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 таск в поршень добавлен. Не знаю, как с помощью скриптов проверить, что возвращает db.actor:has_info(), но таск создан. Это первое, что я проверил Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345712
_g.script 3 658 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 5 минут назад, Zander_driver сказал: через нет_спавн Конечно же! Я тут себе обновление вешал и по запарке копирнул ему апдейт дельта 15 минут назад, Muzafir сказал: Пробовал только что. Получаю вылет без лога Я не то тебе посоветовал, ты правильно вешаешь, на нет_спаун Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345713
Muzafir 19 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 Ок. Попробую еще раз. Я тоже где-то читал, что так правильно, так и Zander_driver сказал, но почему-то не работало. Если не лень, гляньте выше, где я выложил целиком нет-спаун. Может куда-то не туда засовываю? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345717
_g.script 3 658 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 6 минут назад, Muzafir сказал: Попробую еще раз Намерено попробуй выдать несуществующий инфопоршень, получишь вылет "итем нот фаунд...", что бы для себя убедиться, что правильно делаешь. Тут что то с заданием вероятно... 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345719
Muzafir 19 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 (изменено) Да, если при несуществующем инфопоршне получаю именно такой вылет Если вешаю на нет_спаун, выше, строчек --' Загружаем настройки дропа death_manager.init_drop_settings() Как только в перестрелке кого-либо убивают, получаю вылет с руганью на этот death_manager. script Если после него просто ничего не происходит. Если вешаю на update. Задание появляется в ПДА, но беззвучно и не засчитывается при убийстве группы нападающих (как должно). Тут, вероятно, что-то уже с заданием. Изменено 20 Августа 2020 пользователем Muzafir Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345720
Zander_driver 10 348 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 Только что, Muzafir сказал: Может куда-то не туда засовываю? По твоему коду net_spawn все правильно и должно работать как часы. Попробуй разбить на два условия. Проверяй, какое не срабатывает. if level.name() == "simeiz" then -- попробуй тут выдать несуществующий поршень. Может таки в названии локации ошибка? if not has_alife_info("твой_поршень") then -- Если первое условие работает, попробуй тут выдать несуществующий, проверь. else -- И обратное условие тоже проверь. Может ты где-то случайно уже этот поршень актору выдал. end end Если все условия срабатывают, то сам поршень смотри - вписан ли туда task, и правильно ли. Про это уже dsh сказал. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345725
Muzafir 19 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 2 минуты назад, Zander_driver сказал: Если все условия срабатывают, то сам поршень смотри - вписан ли туда task, и правильно ли. Все очень логично, что ты предлагаешь. Но почему этот же код при копи-пасте в delta-update работает? Эх, Сталкер - ни шага без боли!!! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345728
_g.script 3 658 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 1 минуту назад, Muzafir сказал: delta-update работает Таки будет работать, и не только там. Только процессор нагружает. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345730
Zander_driver 10 348 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 Только что, Muzafir сказал: Если вешаю на нет_спаун, выше, строчек --' Загружаем настройки дропа death_manager.init_drop_settings() Как только в перестрелке кого-либо убивают, получаю вылет с руганью на этот death_manager. script Если после него просто ничего не происходит. А может быть, death_manager не возвращает управление вызвавшей его функции, и где-то там внутре себя глухо виснет?.. Маловероятно, но сия дичь все бы объяснила. А таки попробуй свой код поставить выше death_manager-a. Ничего ему от этого сделаться не должно, если у него все нормально. А как вылетит - лог вылета в студию, т.е. сюда. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345731
Muzafir 19 Опубликовано 20 Августа 2020 Поделиться Опубликовано 20 Августа 2020 3 минуты назад, mole venomous сказал: Только процессор нагружает. Я это понимаю, поэтому и хочу сделать по-человечески. Только что намеренно написал название локации неправильно. Никаких вылетов. Выходит это условие не проверяется? Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/528/#findComment-1345733
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти