???
Математика на уровне МГУ

Показано с 1 по 5 из 5

Тема: Как реализовывать ("включать") скрипты?

  1. #1

    Как реализовывать ("включать") скрипты?

    Подскажите пожалуйста чайнику, как реализовывать ("включать", устанавливать) скрипты?
    Высота карман не тянет...

  2. #2
    hehehe 111 Аватар для podvoxx
    Регистрация
    25.08.2008
    Адрес
    Барнаул - Питер
    Возраст
    40
    Сообщений
    4,245

    Re: Как реализовывать ("включать") скрипты?

    Создается файл миссии в редакторе, допустим mission.mis, в этой же папке(это важно!) файл скрипта mission.cs в кодировке UTF-8. Скрипт автоматически запустится при старте миссии. Для редактирования и изменения кодировок желательно использовать этот замечательный текстовый редактор Notepad++(в нем также есть подсветка синтаксиса большинства языков программирования)
    В папке должно быть так:

    Код:
    mission.mis
    mission.cs
    Здесь есть обрывочные сведения которые удалось собрать.

    Если в файле mission.cs разместить такой код:

    Код:
    using System;
    using maddox.game;
    using maddox.game.world;
    public class Mission : AMission 
    {
       public override void OnBattleStarted()
       {
           base.OnBattleStarted();
           GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/blue01.mis");
           GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/red01.mis");
        }
    }
    То можно запустить скрипт из любого места в папке missions в Моих документах, только с ним также должен быть одноименный файл .mis, к которому мы указываем путь.
    Крайний раз редактировалось podvoxx; 12.11.2011 в 13:19.

  3. #3
    Зашедший
    Регистрация
    17.04.2011
    Возраст
    52
    Сообщений
    69

    Re: Как реализовывать ("включать") скрипты?

    Из вышеописанного ,возникает следующий вопрос. А если скриптов два или три или десять? то как их загружать,запускать? Делать одинаковые миссии с разными скриптами и по очереди их запускать? Или же,можно как то прописать нужные скрипты в .cmd?
    Не все так шарят в этом деле,как некоторые тут собравшиеся. А если кто ни будь напишет маленький мануальчик хотя бы по основным вопросам,то многие,такие как я будут вам безмерно благодарны!
    QuadCore AMD Phenom II X4 Black Edition 965, 3415 MHz.......Операционная система Microsoft Windows 7 Ultimate 64 SP 1.....Системная плата Gigabyte GA-790FXTA-UD5 (3 PCI, 1 PCI-E x1, 3 PCI-E x16, 4 DDR3 DIMM, Audio, Dual Gigabit LAN, IEEE-1394)........Системная память 8192 Мб (DDR3-1333 DDR3 SDRAM)........Видеоадаптер NVIDIA GeForce GTX 570 (1280 Мб)......Монитор LG D2342P(HDMI)

  4. #4

    Re: Как реализовывать ("включать") скрипты?

    Цитата Сообщение от golloper Посмотреть сообщение
    Из вышеописанного ,возникает следующий вопрос. А если скриптов два или три или десять? то как их загружать,запускать? Делать одинаковые миссии с разными скриптами и по очереди их запускать? Или же,можно как то прописать нужные скрипты в .cmd?
    Не все так шарят в этом деле,как некоторые тут собравшиеся. А если кто ни будь напишет маленький мануальчик хотя бы по основным вопросам,то многие,такие как я будут вам безмерно благодарны!
    Построено это все дело, если вкратце, следующим образом.

    1. Есть битва, есть миссии в пределах этой битвы. Битва всегда начинается с какой-то первой миссии, к ней уже погоняло прилепилось - хост-миссия. Когда вы запускаете выделенный сервер, как раз ее перед стартом битвы и загружаете. Если запускаете обычный сервер или сингл, та миссия, которую вы выбираете, и будет хостом, первой миссией в битве.

    2. К каждой миссии может прилепится скрипт, с одноименным названием. Например миссия za_spichkami.mis и к ней идет скрипт za_spichkami.сs.

    2а. Скрипт представляет собой обычное определение класса. Класс должен быть публичным и наследоваться от абстрактного класса maddox.game.AMission или от maddox.game.campaign.AMission в случае если это миссия статической кампании. Имя класса помещается в глобальное пространство имен сборки (т.е. никаких namespace {...} быть не должно).

    Примерно так
    Код:
    using maddox.game;
    
    public class Mission: AMission
    {
        // здесь переопределяем методы базового класса, пишем свою логику и прочее;
    }
    3. При загрузке новой миссии в битву игра добавляет на карту все объекты, которые находятся в файле, и добавляет к их именам префикс с номером миссии (новой миссии назначается след. порядковый номер, у хоста он будет 0, у последующих 1, 2, 3 и т.д.). Получается примерно так - у стат. арты c именем Static1 в миссии, которая загрузилась, скажем, под номером 5, будет имя 5:Static1. Первое имя называется коротким (shortName) второе - полным. Если у миссии есть скрипт, игра создает новый экземпляр класса Mission, описанный в скрипте, и помещает его в коллекцию missions (вроде так называется). Перед этим файл скрипта компилится в сборку, сборка помещается в папку кеша (найти можно в папке пользователя), сборка загружается оттуда же.

    4. При возникновении какого либо события в пределах какой-то миссии, игра перебирает коллекцию с миссиями и вызывает соответствующий метод соответствующей миссии, если номер миссии и номер миссии, "вызвавшей" событие, совпадают. Например, помер кто-то с именем, в котором префикс есть цифрой 10 (помним, при загрузке новой миссии игра назначает номера автоматом), игра вызывает OnActorDead(...) в миссии номер 10. Большинство методов в параметрах предоставляют и номер миссии, и короткое имя актора, к которому событие относится. Каждая миссия содержит свойство MissionNumberListener, которое указывает, события в какой именно миссии ее интересуют. Т.е. переопределив это свойство, мы сможем заставить миссию получать неродные события (например миссия 10 сможет слушать события с номером 9). Если мы установим это свойство в -1, миссия будет получать все события независимо от номера. Важно: некоторые методы (OnMissionLoaded, OnGameTick...) вызываются в каждой миссии, вне зависимости от ее номера.

    Вот так вот вкратце это и работает. Переопределяя методы AMission в своем классе Mission мы пишем собственную обработку возникающих событий в битве. Таких миссий может быть сколько угодно. Изучаем доступные нам методы (в этом разделе и на wiki есть). Или же с помощью Visual Studio подключаем сборки из папки игры и получаем исчерпывающую информацию о доступных нам классах, интерфейсах и их свойствах и методах.
    Крайний раз редактировалось Small_Bee; 02.12.2011 в 14:07.

  5. #5
    Зашедший
    Регистрация
    17.04.2011
    Возраст
    52
    Сообщений
    69

    Re: Как реализовывать ("включать") скрипты?

    Спасибо,вполне понятно
    QuadCore AMD Phenom II X4 Black Edition 965, 3415 MHz.......Операционная система Microsoft Windows 7 Ultimate 64 SP 1.....Системная плата Gigabyte GA-790FXTA-UD5 (3 PCI, 1 PCI-E x1, 3 PCI-E x16, 4 DDR3 DIMM, Audio, Dual Gigabit LAN, IEEE-1394)........Системная память 8192 Мб (DDR3-1333 DDR3 SDRAM)........Видеоадаптер NVIDIA GeForce GTX 570 (1280 Мб)......Монитор LG D2342P(HDMI)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •