Это популярное сообщение. Desertir 202 Опубликовано 27 Августа 2014 Это популярное сообщение. Поделиться Опубликовано 27 Августа 2014 Статья больше обзорная, там нету примеров скриптов, там лишь немного текста. Может быть эта статья не нужна, но я хотел начать с чего-то такого. Ссылка. Критикуем. 2 2 1 1 ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Comador 203 Опубликовано 28 Августа 2014 Поделиться Опубликовано 28 Августа 2014 Desertir, данная статья нужна как введение в "скриптописание", чтобы человек, прочитавший ее, смог понять для чего это все нужно. Что касается самой статьи, то она (как на меня) написана простым, доступным языком. 1 Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо. "Худ" и "Умное выпадание частей монстров" для Народной солянки Ссылка на комментарий
Murarius 10 533 Опубликовано 28 Августа 2014 Поделиться Опубликовано 28 Августа 2014 Согласен, как введение - очень хорошо. И доступно. Связь между этими совершенно разными языками осуществляется посредством LuaBind. Это полезно просто иметь ввиду, а что это такое, и как оно непосредственно работает, не так уж и интересно. Важно то, какие возможности эта привязка (bind) дает. Это действительно так? Рассмотрение механизма привязки ничего не даст? Ок, что дальше? Будешь идти так же пошагово от простого или даже простейшего к сложному? Или сразу будешь брать на рассмотрение сложное, а связующие звенья будешь добавлять потом при необходимости? В таком варианте тоже может быть интересно. Лично мне, на взгляд со стороны, сильно импонирует что-то вроде такого плана. Горизонты сразу видны становятся. Позволил себе подредактировать название темы. Литературка (избранное): "Координаты избушки" (2023) --- "Колобок времени" (2019) --- "Пиво и жлоб" (2018) --- "Лекарство против морщин" (2013) --- "Когда все пройдет" (2013) Креатив (бесперспективное): Dominanta --- Сон на земле Досвиданьице (слезное): Смена администратора (2024) Ссылка на комментарий
Desertir 202 Опубликовано 28 Августа 2014 Автор Поделиться Опубликовано 28 Августа 2014 статья нужна как введение в "скриптописание" Она по идее и должна быть введением, я стремился к этому. Рассмотрение механизма привязки ничего не даст? Есть такое слово - инкапсуляция. В данном случае, может быть, это не совсем корректно, но все таки, это сокрытие реализации. Мы можем не знать, как работает стиральная машина внутри, куда идет вода, что там крутится, почему она шумит, но мы можем использовать ее (прочитав руководство) по назначению и получать ожидаемый результат. В большинстве ЯП это есть, мы берем что-то готовое и просто используем. Рассказывать, как работает биндинг и сложно и ненужно, использовать скрипты человек все равно будет так же. Ок, что дальше? Не могу сказать, я не знаю, как получиться. 1 ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Murarius 10 533 Опубликовано 28 Августа 2014 Поделиться Опубликовано 28 Августа 2014 Не могу сказать, я не знаю, как получиться. Тогда нужно определиться - о чем, собственно, ты хочешь написать? Начать можно с того, что тебе интересно. Литературка (избранное): "Координаты избушки" (2023) --- "Колобок времени" (2019) --- "Пиво и жлоб" (2018) --- "Лекарство против морщин" (2013) --- "Когда все пройдет" (2013) Креатив (бесперспективное): Dominanta --- Сон на земле Досвиданьице (слезное): Смена администратора (2024) Ссылка на комментарий
BossBoroda 7 Опубликовано 26 Августа 2017 Поделиться Опубликовано 26 Августа 2017 (изменено) Всем привет - все мы знаем о моде динамических сообщений от ALEX1197 в этом моде сообщения из нескольких выпадают рандомно, а как сделать что они выпадали поочередно и не повторялись, и не вылазили когда переходишь между локациями) вот скрипт: local ini = ini_file("ALEX1197\\CDN_Config.ltx"); local time_news = 0; local config_time = ini:r_u32("settings","config_time"); local config_message_show_time = ini:r_u32("settings","config_message_show_time"); local config_news_count = ini:r_u32("settings","news_count"); function time_update_spam() local time = time_global(); if (time_news < time) then time_news = time + config_time * 1000; -- время через которое будет вызываться сообщение update_spam(); end end function update_spam() if(ini:r_string("settings","text_pick") == "XML") then -- ЕСЛИ выбран ТИП XML local message_string_xml = ini:r_string("news_XML",tostring(math.random(config_news_count))); news_manager.send_tip(db.actor, game.translate_string(message_string_xml), nil, nil, config_message_show_time * 1000); end end Изменено 26 Августа 2017 пользователем BossBoroda Ссылка на комментарий
naxac 2 447 Опубликовано 28 Августа 2017 Поделиться Опубликовано 28 Августа 2017 @BossBoroda , наверно, вычитать всё из конфига на загрузке игры в таблицу, потом рандомно брать из нее текст, удаляя выбранное поле. Чтобы не вылазило при загрузке, можно сделать что-то вроде этого ... local time_news = nil ... function time_update_spam() local time = time_global() if time_news == nil then time_news = time + math.random(config_time * 500) + 5000 elseif (time_news < time) then time_news = time + config_time * 1000 -- время через которое будет вызываться сообщение update_spam() end end Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
aka_sektor 1 476 Опубликовано 6 Июня 2019 Поделиться Опубликовано 6 Июня 2019 @Desertir, стоило бы не только ссылку, а непосредственно текст из файла в "шапку" под спойлер положить. Немного ненужной лирики. «Золотой век» модостроения для игры S.T.A.L.K.E.R. прошел, не нужно этого отрицать, все великие деятели этой области уже никогда не продолжат писать свои гениальные произведения. Не буду спорить – модострой продолжается, однако многие согласятся, что это уже «не то» и «прежним» никогда не станет. Введение. Эта статья, по моему замыслу, должна помочь читающему в понимании, что такое скрипты игры S.T.A.L.K.E.R. Кто-то, возможно из великих, сказал: «Нельзя научить, можно научиться». Я почти не сомневаюсь, что этот человек имел ввиду программирование. Это искусство мыслить не так, как все. Мыслить как машина и как человек одновременно. Знания уходят на второе место и, как следствие, программирование нельзя выучить или бездумно списать. Это способ понимать одновременно простые и сложные вещи. Но, если вы можете это делать, или хотя бы безумно желаете этого, то вам открывается «мир» поистине безграничных возможностей. К делу. Итак, вам нужно залезть в скрипты, добавить пару строк, и радоваться жизни дальше. В этом случае можете смело закрыть эту статью, открывать форум АМК или идти на Вики и искать ответа там, т.к. для вас следующий текст будет просто горой слов, который никак не пригодиться. Здесь я попытаюсь объяснить, что же такое скрипты, зачем они нужны, и что нужно для их использования. Скрипт – тестовый файл, содержащий необходимые команды для реализации того или иного функционала игры. Это определение лежит в контексте рассматриваемой игры, на Википедии есть страница «Сценарный язык», которая может оказаться полезной для прочтения. С определением понятно, наверное, зачем же это нужно? К сожалению, пока не изобрели телепатию; компьютер может понимать человека только на определенных языках (в конечном итоге, наборе процессорных инструкций, но не будем сгущать краски), так что ответ очевиден, скрипты нужны для того, чтобы игра понимала, что от нее хотят. Пока вроде бы просто? Не совсем, как же игра понимает текст на самом деле? Тут мне придется сказать пару «умных» слов. Игра это программа. Как ваш браузер, как блокнот или проводник Windows. Все это программы, они написаны на неком языке программирования (ЯП). Скрипты так же пишутся на определенном ЯП – в данной игре это Lua. Сама же игра (движок – X-Ray Engine) написана на языке C++. Связь между этими совершенно разными языками осуществляется посредством LuaBind. Это полезно просто иметь ввиду, а что это такое, и как оно непосредственно работает, не так уж и интересно. Важно то, какие возможности эта привязка (bind) дает. Дело в том, что мы не можем использовать движок напрямую. Нельзя сказать «Хей, чувак, скажи как зовут вот этого NPC, если это Волк, то положи ГГ в инвентарь водку». Если бы скриптов не было, такое действие нельзя было бы добавить или как-то выполнить. Готовую программу можно запустить и закрыть, на этом стандартные манипуляции заканчиваются. Однако если программа может прочесть текстовый файл с определенным содержимым, понять это содержимое и что-либо сделать с ним, тогда мы можем повлиять на программу достаточно серьезно. Этим и занимаются скрипты – влияют на игру, задают для нее сценарий (найдите в словаре слово script). Итак, раз скрипт – текстовый файл, тогда его можно открыть любым текстовым редактором и писать в него все, что душе угодно, почти. Понимание чужих и написание своих скриптов – непростая задача, в которой нельзя помочь, разве только предлагать направление, а следовать ему или нет, выбирать вам. Чтобы использовать скрипты нужно несколько вещей: желание это делать, понимать некоторые принципы программирования, понимать язык скриптов, знать, где посмотреть документацию по ним. Заключение. Так или иначе, я ответил на три поставленный вопроса, кто-то из прочитавших (если такие есть) знал ответы, кому-то было просто (не)интересно, а кто-то сделал для себя выводы, что скриптование – штука хитрая и сложная, но интересная. 2 Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти