Перейти к контенту
Desertir

[Не]много о скриптах

Рекомендуемые сообщения

Desertir, данная статья нужна как введение в "скриптописание", чтобы человек, прочитавший ее, смог понять для чего это все нужно.

Что касается самой статьи, то она (как на меня) написана простым, доступным языком.

  • Согласен 1

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

Ссылка на комментарий

Согласен, как введение - очень хорошо. И доступно.

Связь между этими совершенно разными языками осуществляется посредством LuaBind. Это полезно просто иметь ввиду, а что это такое, и как оно непосредственно работает, не так уж и интересно. Важно то, какие возможности эта привязка (bind) дает.

Это действительно так? Рассмотрение механизма привязки ничего не даст?

 

Ок, что дальше? Будешь идти так же пошагово от простого или даже простейшего к сложному? Или сразу будешь брать на рассмотрение сложное, а связующие звенья будешь добавлять потом при необходимости? В таком варианте тоже может быть интересно.

Лично мне, на взгляд со стороны, сильно импонирует что-то вроде такого плана. Горизонты сразу видны становятся. :)

 

Позволил себе подредактировать название темы. :)

 

 

Ссылка на комментарий

 

 

статья нужна как введение в "скриптописание"

Она по идее и должна быть введением, я стремился к этому.

 

 

Рассмотрение механизма привязки ничего не даст?

Есть такое слово - инкапсуляция. В данном случае, может быть, это не совсем корректно, но все таки, это сокрытие реализации. Мы можем не знать, как работает стиральная машина внутри, куда идет вода, что там крутится, почему она шумит, но мы можем использовать ее (прочитав руководство) по назначению и получать ожидаемый результат. В большинстве ЯП это есть, мы берем что-то готовое и просто используем. Рассказывать, как работает биндинг и сложно и ненужно, использовать скрипты человек все равно будет так же.

 

 

Ок, что дальше?

Не могу сказать, я не знаю, как получиться.

  • Согласен 1

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

 

 

Не могу сказать, я не знаю, как получиться.

Тогда нужно определиться - о чем, собственно, ты хочешь написать?

Начать можно с того, что тебе интересно.

 

Ссылка на комментарий

Всем привет - все мы знаем о моде динамических сообщений от 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

Изменено пользователем BossBoroda
Ссылка на комментарий

@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

naxac.gif

Ссылка на комментарий

@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
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...