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

Страница 4 из 7 ПерваяПервая 1234567 КрайняяКрайняя
Показано с 76 по 100 из 168

Тема: Полный редактор и скрипты.

  1. #76
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Конечно не работает, уничтожения аэростата не вызывает никаких методов в миссии, конечно нельзя применить Destroy() когда нету даже ссылки на объект. )))
    Я не был бы так настойчив, если бы не был уверен в обратном. Проверял это дело раньше. Проверил и еще раз. Событие на убиение аэростата происходит! Гружу одной миссией шесть синих зениток в ряд. Другой миссией гружу напротив два красных аэростата. И пишу такой код:
    Код:
    public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages)
    {
     base.OnActorDead(missionNumber, shortName, actor, damages);
    
     Sss("Был подбит аэростат армии :" + actor.Army().ToString());
     Sss("Хеш подбитого аэростата :" + actor.GetHashCode().ToString());
     Sss("Имя подбитого аэростата :" + actor.Name());    
    }
    И в логе сервера пишется это:
    Server: Был подбит аэростат армии :1
    Server: Хеш подбитого аэростата :60779388
    Server: Имя подбитого аэростата :NONAME
    Server: Был подбит аэростат армии :1
    Server: Хеш подбитого аэростата :2922015
    Server: Имя подбитого аэростата :NONAME


    Определяется и "Хеш" и "Армия". А вот остальное ничего не пашет. В том числе и имя, заданное в файле-миссии, не определяется. А вот само событие срабатывает четко и неизменно.

    Ладно, наверное с этим пока точно ничего не поделаешь. Буду спавнить аэростаты просто в начале миссии. Где-нибудь не рядом с зенитками, а подальше. Так, чтобы глаз радовали, и если подобьют, чтобы трупики их (не убирающиеся) не сильно мешались.

    Имею еще один каверзный вопрос:
    Есть событие появления в миссии объектов. Название ему OnActorCreated. Естественно, срабатывает оно на все подряд. При этом срабатывании я начинаю заполнять, ранее созданные два словаря: _Zenitki_Red_ и _Zenitki_Blue_. Заполняю я их только нужными мне объектами. А именно зенитками. Все остальное игнорируется. Пишу такой код:

    Код:
    public override void OnActorCreated(int missionNumber, string shortName, AiActor actor) 
    {
       base.OnActorCreated(missionNumber, shortName, actor); 
    
       Timeout(1, () =>
          {
           //Определяем имя загружаемого объекта
           Zena = (actor as AiCart).InternalTypeName().ToString();
    
           //Если миссия не является стартово-загрузочной и этот объект принадлежит
           // армии красных и имя ему "bob:Artillery.Krupp_L2H43_Protze_Flak38", то...
           if (missionNumber != 0 && actor.Army() == 1 && Zena == "bob:Artillery.Krupp_L2H43_Protze_Flak38")
              {
               _Zenitki_Red_.Add(shortName, missionNumber); //добавляем в справочник красных очередную новую запись
              }
    
           //Если миссия не является стартово-загрузочной и этот объект принадлежит
           // армии синих и имя ему "bob:Artillery.Krupp_L2H43_Protze_Flak38", то...
           if (missionNumber != 0 && actor.Army() == 2 && Zena == "bob:Artillery.Krupp_L2H43_Protze_Flak38")
              {
               _Zenitki_Blue_.Add(shortName, missionNumber); //добавляем в справочник синих очередную новую запись
              }
          });
    }
    Опять же, как и несколько постов ранее, получается, что нужно нужно ОБЯЗАТЕЛЬНО вводить задержку Timeout. Если ее не вводить, то все отлично пашет и так, но в логе сервера неизменно возникает ошибка, как только я пытаюсь выполнить эту часть кода: Zena = (actor as AiCart).InternalTypeName().ToString();. Повторюсь... Это все замечательно пашет и без задержки Timeout.

    Непонятки эти, происходящие в событиях мисси, меня сильно напрягают. Что при удалении объекта, нужно делать задержку, что при его создании считывать атрибуты опять же нужно с задержкой. Все это как-то сумбурно...
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  2. #77

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    Server: Имя подбитого аэростата :NONAME
    Да, немного ошибся, но сути не меняет. Выделенное - Ключевой момент. К какому классу относятся эти нонеймы или какие интерфейсы реализовывают я так и не понял. Т.е. имя конечно есть, но оно то ли обфускатором обработано, то ли еще как, чего с ними делать, не представляю. Как только не крутил. Поэтому такие нонеймы пропускаю. Собственно почему и сказал, что метод не вызывается - тушение нонеймов это у меня в первую очередь. )

    --- Добавлено ---

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    Опять же, как и несколько постов ранее, получается, что нужно нужно ОБЯЗАТЕЛЬНО вводить задержку Timeout. Если ее не вводить, то все отлично пашет и так, но в логе сервера неизменно возникает ошибка, как только я пытаюсь выполнить эту часть кода: Zena = (actor as AiCart).InternalTypeName().ToString();. Повторюсь... Это все замечательно пашет и без задержки Timeout.

    Непонятки эти, происходящие в событиях мисси, меня сильно напрягают. Что при удалении объекта, нужно делать задержку, что при его создании считывать атрибуты опять же нужно с задержкой. Все это как-то сумбурно...
    Мы на самом деле не знаем, что конкретно делает дестрой. И получаем мы интерфейс, а истинный класс, который за ним скрыт и что как он делает мы не знаем, и согласно принципам ООП и не должны. )
    Вполне возможно, что на момент вызова метода какие-то поля еще не инициализированы.

    ЫЫЫ слушай у меня тут эврика сияет, а DamagerScore там заполнен? И можно ли Pos() получить? И глянь плиз где именно Army() определен, я сам сейчас не посмотрю, а очень хочется )
    Крайний раз редактировалось Small_Bee; 02.12.2011 в 14:43.

  3. #78
    Старший Офицер Форума
    Регистрация
    15.02.2002
    Адрес
    Moscow
    Возраст
    45
    Сообщений
    6,905
    Images
    51

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    Не-не-не!!! Сори!
    Я этой функцией вывода вспомогательного сообщения, только ввел вас в заблуждение.
    Все! Забыли про Sss("Удалили красную зену: " + actorName); Дело вовсе не в этом. Ошибка есть так или иначе. Вот код без этой функции и ошибка все равно возникает:
    Код:
    public override void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages)
    {
    base.OnActorDead(missionNumber, shortName, actor, damages);
    if (actor is AiGroundActor)
       {
        (actor as AiGroundActor).Destroy();
       }
    }
    Проверил только что еще раз. Ошибка есть. И нет ошибки, если проделать все тоже самое, но с секундной задержкой.
    Но подчеркиваю: И в том и в этом случае, зенитка все равно нормально удаляется.
    Сорри, я сейчас в отпуске, поэтому только набегами и проверить что да как не могу. По дестрою умершего объекта до меня только сейчас дошло - во время actorDie на объект цепляются всякие дымы, огни и пр. эффекты, которые какое-то время инициализируются и через какое-то время должны прекратиться, если такой умерший объект задестроить - вылезет NullReferenceException при попытке системой обработать эти эффекты. Плюс, убитые пушки, например, при убийстве принимают "дохлый вид" не заменой на модельку дохлой, а приведением живой к дохлому виду - темнеет, опускает ствол и т.д., соответственно, игра пытается довернуть ствол в "мёртвое состояние " а объект скриптом уже задестроен - вот NullReferenceExceptionи выскакивает.
    Don't happy, be worry

  4. #79
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    ...ЫЫЫ слушай у меня тут эврика сияет, а DamagerScore там заполнен? И можно ли Pos() получить? И глянь плиз где именно Army() определен, я сам сейчас не посмотрю, а очень хочется )
    С этим параметром я еще не работал, а так, вообще-то, там что-то заполняется.

    Чисто наобум глянул. Увидел это:
    damages.Count равен: 1
    ddamages[0].initiator.Actor.Name() равен: 2:Static2
    damages[0].initiator.Person.Name() равен: NONAME
    ...ну, там много чего еще есть. Только больше, мне кажется, там инфы не "кого" убили, а "кто" убил. В любом случае, надеюсь на твою гениальность. А вдруг, что-то можно родить? В смысле убить трупик...

    Цитата Сообщение от naryv Посмотреть сообщение
    ...соответственно, игра пытается довернуть ствол в "мёртвое состояние " а объект скриптом уже задестроен - вот NullReferenceException и выскакивает.
    Ясно. Я догадывался... Это было видно еще по тому, как "хеш" объекта меняется. Ну, мне главное, чтобы я был уверен, что скрипт пишу правильно и чтобы ошибка в логе сервера не приводила к утечке памяти или к крушению сервака. А в остальном, на это можно и забить.

    P.S.
    Давай уже выходи из отпуска скорее. Летом догуляешь. Кто ж в такое время отдыхает? Погода - жесть!!! Ггг!
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  5. #80

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    С этим параметром я еще не работал, а так, вообще-то, там что-то заполняется.

    Чисто наобум глянул. Увидел это:
    damages.Count равен: 1
    ddamages[0].initiator.Actor.Name() равен: 2:Static2
    damages[0].initiator.Person.Name() равен: NONAME
    ...ну, там много чего еще есть. Только больше, мне кажется, там инфы не "кого" убили, а "кто" убил. В любом случае, надеюсь на твою гениальность. А вдруг, что-то можно родить? В смысле убить трупик...
    Это понятно, что там тот, кто убил. Значит уже хорошо, бобрам статики считать можно... Осталось каким то образом разрулить, кого убили. Если можно получить позицию через Pos(), то в принципе, зная наперед, что мы туда поставили, можно определится, кого убили. Примерно так.

  6. #81
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Ага. Ясно.
    Но я так понимаю, это для статистики полезно будет, но никак не для определения истинного "actor"-а убиенного объекта, с последующим его удалением из миссии. Верно?

    Кстати, а есть уже у кого-то рабочий начальный вариант скрипа статистики? Я бы с удовольствием глянул краем глаза на это дело.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  7. #82

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    Ага. Ясно.
    Но я так понимаю, это для статистики полезно будет, но никак не для определения истинного "actor"-а убиенного объекта, с последующим его удалением из миссии. Верно?

    Кстати, а есть уже у кого-то рабочий начальный вариант скрипа статистики? Я бы с удовольствием глянул краем глаза на это дело.
    Примитивные варианты где-то есть, скрипят вроде. На форуме покопаться. Более продвинутый в работе, сам плюс бд готовы процентов на 95, вебморда процентов на 5% )

  8. #83
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    ...Более продвинутый в работе, сам плюс бд готовы процентов на 95.
    БД на MySQL или что-то иное?

    Да, нужно поискать примеры. Без понятия, как C# общается с базами данных. Немного ваял это дело на PHP, а вот в этом деле - полный ноль. Видимо придется плотнее изучать C#. Но начать хотелось бы все же с готовых примеров.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  9. #84

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    БД на MySQL или что-то иное?

    Да, нужно поискать примеры. Без понятия, как C# общается с базами данных. Немного ваял это дело на PHP, а вот в этом деле - полный ноль. Видимо придется плотнее изучать C#. Но начать хотелось бы все же с готовых примеров.
    Вообще для MySQL есть провайдер .NET, можно у них на оффсайте забрать. А если нет, так ничто не мешает сделать что то вроде REST службы на PHP и юзать на здоровье. MySQL выбрана как самая доступная и простая база, но в принципе никто не мешает заменить на другую базу или вообще записи в файл, возможность переключения заложена.

  10. #85
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Вообще для MySQL есть провайдер .NET, можно у них на оффсайте забрать. А если нет, так ничто не мешает сделать что то вроде REST службы на PHP и юзать на здоровье...
    Эх! Не знаю я пока ни того, ни другого.
    Ну, да ладно. Займусь этим чуть позже.

    Вопрос:
    Имеется статический объект - "Минный тральщик". Его подбивают. Он тонет и пропадает из битвы бесследно. Нужно ли убирать его трупик, (который теоретически должен лежать на дне моря), перед загрузкой нового Минного тральщика?
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  11. #86
    Старший Офицер Форума
    Регистрация
    15.02.2002
    Адрес
    Moscow
    Возраст
    45
    Сообщений
    6,905
    Images
    51

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    Ясно. Я догадывался... Это было видно еще по тому, как "хеш" объекта меняется. Ну, мне главное, чтобы я был уверен, что скрипт пишу правильно и чтобы ошибка в логе сервера не приводила к утечке памяти или к крушению сервака. А в остальном, на это можно и забить.
    в принципе к крашам или утечке памяти такие ситуации не должны приводить, но вообще, лучше избегать таких ситуаций.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    P.S.
    Давай уже выходи из отпуска скорее. Летом догуляешь. Кто ж в такое время отдыхает? Погода - жесть!!! Ггг!
    ну у меня " по семейным обстоятельствам" отпуск .

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    Вопрос:
    Имеется статический объект - "Минный тральщик". Его подбивают. Он тонет и пропадает из битвы бесследно. Нужно ли убирать его трупик, (который теоретически должен лежать на дне моря), перед загрузкой нового Минного тральщика?
    Можно и убрать, он не бесследно пропадает, он "тонет"
    Don't happy, be worry

  12. #87
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от naryv Посмотреть сообщение
    ...но вообще, лучше избегать таких ситуаций.
    Ага. Уже ввел задержку на 1 секунду. Ошибка пропала.

    Цитата Сообщение от naryv Посмотреть сообщение
    ... Можно и убрать, он не бесследно пропадает, он "тонет"
    Убираю. Надеюсь правильно. И на дне не будет скапливаться груда ржавеющих трупиков.

    Такой вопрос:
    Правильно ли я мыслю, что для того, чтобы сделать респавн на каждый одиночный статический объект в битве (зенитка, корабль) нужно создавать свою отдельную миссию на этот объект? Иными словами; объект подбили, затем, по таймеру мы убираем его трупик, и так же по таймеру, или еще по какому-то другому условию, загружаем миссию с этим объектом снова. Верно я понимаю этот процесс? Или быть может есть какой-то другой, более простой способ подзагрузки, тех или иных, одиночных объектов? А то получается, что сколько в битве присутствует одиночных статических объектов, столько и должно быть вспомогательных миссий, для загрузки этих объектов. В старом Ил-2 с этим было все просто. Задал время респавна объектов и забыл про это.

    Вопрос по статистике:
    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Примитивные варианты где-то есть, скрипят вроде. На форуме покопаться...
    Поискал по форуму примеры скриптов статистики. Ничего не смог найти. Пусто. В том числе пусто и в архиве примеров. Искал по таким словам, как:
    SqlClient
    SqlConnection

    Может не так искал? Единственное, что нашел - это ссылку на рабочую статистику сервера Репки2: http://r2.repka.su/ и в общем-то и все. А очень бы хотелось глянуть несколько примеров того, как это все делается.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  13. #88

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    Вопрос по статистике:

    Поискал по форуму примеры скриптов статистики. Ничего не смог найти. Пусто. В том числе пусто и в архиве примеров. Искал по таким словам, как:
    SqlClient
    SqlConnection

    Может не так искал? Единственное, что нашел - это ссылку на рабочую статистику сервера Репки2: http://r2.repka.su/ и в общем-то и все. А очень бы хотелось глянуть несколько примеров того, как это все делается.
    Вопрос подключения к базам данных это уже вопрос для специализированных форумов, и к данной теме отношение не имеет. Юзаем поисковики: mysql c# example

  14. #89
    3GIAP.ru Аватар для -atas-
    Регистрация
    26.12.2001
    Адрес
    Москва
    Возраст
    53
    Сообщений
    2,992
    Записей в дневнике
    1

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    В том числе пусто и в архиве примеров.
    Миссия DGW2 islands w.stat by stillborn
    На Репке стат из нее.
    ...зелёные горят.
    ----------------------

    i7-860@3.8, 4GB, ati4890-2GB, 1680x1050, Win7-64.

  15. #90
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Вопрос подключения к базам данных это уже вопрос для специализированных форумов, и к данной теме отношение не имеет. Юзаем поисковики: mysql c# example
    Нет, меня интересуют как раз игровые скрипты. Как и в какой момент времени, заносить данные в базу. И где их, собственно, брать. А как подключиться к базе, я уже нашел. Даже нашел подключение, к базе Microsoft Access. Как к обычной, так и к защищенной.

    Нужно описание:
    "OnActorDamaged"
    подробное описание параметра "List<DamagerScore>" в "OnActorDead"
    "OnAircraftCrashLanded"
    "OnAircraftDamaged"
    "OnAircraftKilled"
    ну, и так далее. В общем, все то, что можно было бы заносить в статистику, как данные по тому или иному пилоту.

    Цитата Сообщение от -atas- Посмотреть сообщение
    Миссия DGW2 islands w.stat by stillborn
    На Репке стат из нее.
    Ага. Спасибо! Полез смотреть...
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  16. #91
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Вопрос...

    В скрипте пишу так:
    Код:
    using System;
    using maddox.game;
    using maddox.game.world;
    using System.Collections.Generic;
    Все пашет.

    Но когда пишут так:
    Код:
    using System;
    using System.Data;
    using maddox.game;
    using maddox.game.world;
    using System.Collections.Generic;
    То в консоли сервера выдает ошибку на эту "using System.Data;".
    Ошибка такая:
    Код:
    =================================================
    System.Exception: c:\Documents and Settings\СЛАВИК\Мои документы\1C SoftClub\il-2 sturmovik cliffs of dover\missions\Multi\Dogfight\Skript.cs(3,14): error CS0234: Имя типа или пространства имен 'Data' отсутствует в пространстве имен 'System' (пропущена ссылка на сборку?)
    
       в 2fK76H4rrxvt3dZC4k8.s2sCuh4qoKKt665i9Aa.ZfiUJaJndHR(String , Boolean , Boolean )
       в 2fK76H4rrxvt3dZC4k8.s2sCuh4qoKKt665i9Aa.DOFjDteibXpNRMImCyI6(Object , Boolean , Boolean )
       в 2fK76H4rrxvt3dZC4k8.s2sCuh4qoKKt665i9Aa.WEmUJe0WYUR(String )
       в 2fK76H4rrxvt3dZC4k8.s2sCuh4qoKKt665i9Aa.SSlUJE8On9c(String , Int32 )
    =================================================
    Причем в самой среде "Microsoft Visual C# 2010" все пашет на ура.


    Эта using System.Data; так же как и using System.Data.OleDb; нужны в скрипте для соединения с базой данных.. Повторюсь, что в среде "Microsoft Visual C# 2010" все пашет на ура. Соединение с базой и получение данных посредством SQL запросов работает отлично. А сервак эту Data не видит в упор.
    Писал уже и с большой буквы и с маленькой.

    Хееееелп!!!
    Крайний раз редактировалось SlavikSG; 06.12.2011 в 13:21.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  17. #92

    Re: Полный редактор и скрипты.

    Все верно, и не сможешь, т.к. такие сборки игра не подключает, соответственно ты их использовать не можешь. Поэтому всю логику пишешь в отдельной сборке а к миссии ее подключаешь.

    Вот выдрал из своей работы кусок для примера.

    BridgeMission.cs - непосредственно скрипт миссии, который подключает сборку, с помощью рефлексии создает экземпляр класса из сборки и извлекает необходимые методы класса.
    RepkaBridge.cs - Размещается в отдельное сборке, собственно упомянутый выше класс. Как видно, убираем необходимость переопределения методов миссии, мы переводим всю кухню на событийную модель, плюс можем теперь подключать в своей сборке любые фичи.

    В моем случае одним из подписчиков на эти события и есть стата.

    Думаю этот пример пригодится всем кто занимается скриптами.
    Вложения Вложения

  18. #93
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    ...который подключает сборку, с помощью рефлексии создает экземпляр класса из сборки и извлекает необходимые методы класса.
    Ужас!!!
    Для не посвященного - это тоже самое, что слова матом. Абракадабра. Ничего не понял! Ну, разве что так... Создаем класс. Создаем экземпляр класса. Юзаем методы этого класса. Но это все просто общие слова, которые ничего мне не поясняют.

    А нет примерчика с двумя файлами? Где один скрипт, подключает другой. Ну, или, как там иначе делается?.. Мне бы глянуть разок, до меня бы дошло, (возможно).

    Задача у меня такая:
    Имеем некое событие в миссии. Пусть это будет то же самое широко распространенное "OnActorDead". По этому событию получаем кучу данных. Кого убили, кто убил, и так далее. Записываем эти данные в базу данных. Не в текстовый файл, как в примере упомянутым -atas- "DGW2 islands w.stat by stillborn" (который я сегодня посмотрел), а именно в полноценную базу данных. В моем случае, хотелось бы заюзать базу Microsoft Access. Для меня это был бы самый удобный вариант.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    ...Поэтому всю логику пишешь в отдельной сборке а к миссии ее подключаешь...
    Как это сделать практически???

    Предоставленный тобою пример sample.zip‎ я уже где-то видел раньше. Он ничего поясняет. Срабатывает триггер, загружается подмиссия. И все, собственно... А на твои примерочные файлы BridgeMission.cs и RepkaBridge.cs никаких ссылок нет.

    Снова кричу: - Хээээлп!!!
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  19. #94

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение

    Как это сделать практически???

    Предоставленный тобою пример sample.zip‎ я уже где-то видел раньше. Он ничего поясняет. Срабатывает триггер, загружается подмиссия. И все, собственно... А на твои примерочные файлы BridgeMission.cs и RepkaBridge.cs никаких ссылок нет.

    Снова кричу: - Хээээлп!!!
    Пример ты не мог видеть где-то раньше. Там нет никаких подмиссий и триггеров.
    Этот пример поясняет, как практически подключить свою сборку к скрипту миссии и транслировать события миссии в свою сборку, а что ты будешь делать в этой сборке - твое дело, хоть к базам подключаться, хоть на бирже играть. Там нет никакой конкретной реализации, ТАМ УЖЕ ВСЕ ГОТОВО для того, что бы эту реализацию создать. А ее никто кроме тебя самого делать не будет.
    Прежде чем требовать пояснений, очень не помешает хоть немного подтянуть матчасть. То, что Вы ничего не поняли из примера, это не его проблема. Тем более это файлы из рабочего проекта, которые реально работают.
    Крайний раз редактировалось Small_Bee; 06.12.2011 в 17:44.

  20. #95
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Погоди... Ты не понял. Выложенный тобою zip-архив sample.zip‎ с примером я видел тут:
    http://wiki.sukhoi.ru/index.php?titl...81%D0%B8%D0%B9
    Обычные тригеры, которые срабатывают и что-то там делают. С комментариями на немецком языке. В принципе, там все понятно, но для меня, в данном случае, бесполезно.

    Я говорю, про твои примеры "BridgeMission.cs" и "RepkaBridge.cs". Где их можно посмотреть? Ты ведь ссылку на них не сделал. Только имена файлов и все.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    ...Прежде чем требовать пояснений, очень не помешает хоть немного подтянуть матчасть...
    Упаси Бог! Никто ничего не требует!
    Я ПРОШУ помощи. А матчасть... Ковыряюсь, конечно, потихоньку... Не без этого. Ну, может плохо ковыряюсь. Прости, если что не так. И спасибо, что помогаешь мне, балбесу...

    Теорию я понял. Миссия игры транслирует в мою "Сборку" какие-то события, а эта "Сборка" их обрабатывает. Вот мне бы крохотный пример того, как это реализовать практически. Скажем, в миссии что-то бабахнуло, "Сборка" это услышала и отреагировала тем, что я там в ней напишу-нагорожу. Как заставить миссию сказать моей "Сборке" что-то? И как эта "Сборка" может слушать миссию игры? Были вроде реализации на вроде того, что некая программа в реальном времени читает (парсит) лог-файл игры и тем самым реагирует на события игровой миссии. Но это же жесть!!! Нельзя так делать.

    --- Добавлено ---

    Блин, сори!!!!!!!!!!!!!!!!!

    Тупо запутался в архивах. Перепутал ранее скачанный "Samples.zip" с твоим выложенным "sample.zip". Вот ведь как! Тупо невнимательность...
    Все, пока вопросов нет. Полез смотреть. Спасибо!
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  21. #96

    Re: Полный редактор и скрипты.

    Сорри и меня, я просто немного в осадок выпал, я за Фому, а мне за Ерему. )

  22. #97
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    Сорри и меня, я просто немного в осадок выпал, я за Фому, а мне за Ерему. )
    Ага.

    Начал смотреть код. Что-то уж больно туго он мне дается.

    А можно было бы, если есть время, прокомментировать построчно эту, как я понимаю, ключевую часть кода из файла BridgeMission.cs:
    Код:
    private void Init(string path)
        {
            try
            {
                Assembly a = Assembly.LoadFile(path);
                GamePlay.gpLogServer(null, "Assembly: {0}", new object[] { a.FullName });
                Type bridgeType = a.GetType("RepkaMissionsLib.core.RepkaBridge");
                GamePlay.gpLogServer(null, "Bridge: {0}", new object[] { bridgeType.Name });
                if (bridgeType != null)
                {
                    bridge = Activator.CreateInstance(bridgeType, new object[] { this });
                    if (bridge != null)
                    {
                        method[EventType.ActorCreated] = bridgeType.GetMethod("OnBridgeActorCreated");
                        method[EventType.ActorDamaged] = bridgeType.GetMethod("OnBridgeActorDamaged");
                        method[EventType.ActorDead] = bridgeType.GetMethod("OnBridgeActorDead");
    ...
    В первом посту этой темы, под словами "Человеческим языком:" , у тебя уж больно здорово это получалось. Плиииз!..

    И что-то я не уверен, где происходит обращение к "Сборке" по факту произошедшего события в миссии. Случайно не в этом методе?
    Код:
    private void InvokeEvent(EventType ev, params object[] args)
    {
       ...
    }
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  23. #98
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Полный редактор и скрипты.

    Тишина в теме. Гробовая.

    ...ковырялся я, ковырялся, но мне по прежнему не ясно, как же все таки подключается библиотека. Как к ней происходит обращение из миссии и передаются параметры. Если забыть про объектно ориентированное программирование, то я думал, что будет, примерно, так:
    1. Имеется один файл с расширением "cs". Это есть скрипт и код миссии. В ней происходит событие по факту убиения какого-то объекта (например).
    2. Имеется второй файл с расширением "cs" в нем написаны процедуры и функции для работы с базой данных статистики.
    3. В первом файле подключаем второй файл и мы как бы юзам процедуры второго файла. (так я не Дельфи когда-то делал)

    Вот так мне казалось. Я совсем неправ?

    Пока Small_Bee куда-то благополучно пропал (наверное дописывает статистику), представляю вашему вниманию готовый к использованию простейший скрипт и миссию, которая крутится сейчас на моем сервере.

    Небольшое описание:
    Имеются зенитки для защиты ВПП красных и синих. Естественно, в ходе битвы их уничтожают нерадивые злые вирпилы, дабы они не мешались. Уничтожаются они навсегда. Чтобы восстановить эти невинно убиенные зенитки на всех своих филдах, нужно подбить шесть вражеских зениток. И наоборот. Вот такое нехитрое условие для играбельности в Битве. Так же на карте, для разнообразия, стоят танкеры и минные тральщики. Танкер автоматически респавнится через каждые пол часа (после его благополучного затопления), тральщик через час.

    Отличительной особенностью скрипта является то, что нет триггеров. А имена всех зениток записываются заранее во время их появления на карте, чтобы потом их можно перебирать по именам и в цикле удалять для последующего респавна. Код скрипта насыщен моими личными комментариями. Начинающим, возможно, будет полезно, а гуру прошу отнестись к ним снисходительно. Ведь я полный чайник в этом деле! И писал их лично для себя и для того, чтобы потом, через какое-то время, понять, что я там вообще нагородил.

    Взять это хозяйство можно тут:
    http://www.box.com/s/h734mjr2f0fnodbhvzey
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

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

    Re: Полный редактор и скрипты.

    Цитата Сообщение от SlavikSG Посмотреть сообщение

    Пока Small_Bee куда-то благополучно пропал (наверное дописывает статистику), представляю вашему вниманию готовый к использованию простейший скрипт и миссию, которая крутится сейчас на моем сервере.е на карте, для разнообразия, стоят танкеры и минные тральщики. Танкер автоматически респавнится через каждые пол часа (после его благополучного затопления), тральщик через час.
    Спасибо, если завтра на митинге не пришибут, на выходных постараюсь посмотреть.

  25. #100

    Re: Полный редактор и скрипты.

    Славик, файл с расширением cs - это просто исходник, чтоб выполнить код из него он должен быть откомпилирован компилятором языка C#, а результат помещен в исполняемый файл (exe) или файл динамической библиотеки (dll), которые в контексте платформы .NET называются сборками. Твой файлик со скриптом миссии при ее загрузке тоже будет откомпилирован в сборку, и помещен в папку временных файлов системы. SmallBee это подробно расписал в начале темы Как реализовывать ("включать") скрипты?.

    В куске кода из твоего примера:

    - Загружается сборка.
    - В ней ищется класс с полным именем "RepkaMissionsLib.core.RepkaBridge".
    - Динамически создается экземпляр этого типа.
    - Получаются описатели методов "OnBridgeActorCreated" "OnBridgeActorCreated".
    - Описатели помещаются в массив, для последующего вызова.

Страница 4 из 7 ПерваяПервая 1234567 КрайняяКрайняя

Ваши права

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