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

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

Тема: Штрафбат для бросивших самолет в онлайне (скрипт)

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

    Штрафбат для бросивших самолет в онлайне (скрипт)

    Запрещает вылет на новом самолете для тех кто бросил старый самолет в воздухе, выйдя в меню.
    Автор FG28_Kodiak
    http://forum.1cpublishing.eu/showpos...66&postcount=7


    Код:
    using System;
    using maddox.game;
    using maddox.game.world;
    using System.Collections.Generic;
    
    
    public class Mission : AMission
    {
    
        const int TotalArrestTime = 30;  // Time in seconds
    
        public class prisonCell
        {
            public Player Prisoner { get; set; }
            public DateTime JailTime { get; set; }
            public bool Removable { get; set; }
        }
    
        public List<prisonCell> PrisonCamp = new List<prisonCell>();
    
    
        public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
        {
            base.OnPlaceEnter(player, actor, placeIndex);
    
            if (PrisonCamp.Count != 0)
            {
                foreach (prisonCell pri in PrisonCamp)
                {
                    if (pri.Prisoner == player)
                    {
                        TimeSpan ArrestTime = DateTime.Now.Subtract(pri.JailTime);
    
                        if (ArrestTime.TotalSeconds < TotalArrestTime)
                        {
                            GamePlay.gpLogServer(null, "Player: {0} is under Arrest\n", new object[] { player.Name() });
                            GamePlay.gpHUDLogCenter(new Player[] { player }, "{0} you are under Arrest!", new object[] { player.Name() });
                            (actor as AiAircraft).hitNamed(part.NamedDamageTypes.FuelPumpFailure);
                        
                        }
                        else
                        {
                            pri.Removable = true;
                        }
                        
                    }
                }
    
                PrisonCamp.RemoveAll(item => item.Removable == true);
            }
        }
    
    
    
        public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex)
        {
            base.OnPlaceLeave(player, actor, placeIndex);
    
            if ((actor as AiAircraft).IsAirborne())
            {
    
                GamePlay.gpLogServer(null, "Player: {0} get a {1} sec. penalty for leaving Airplane in flight\n", new object[] { player.Name(), TotalArrestTime });
    
                prisonCell NewPrisoner = new prisonCell();
                NewPrisoner.Prisoner = player;
                NewPrisoner.JailTime = DateTime.Now;
    
                PrisonCamp.Add(NewPrisoner);
            }
        }
    
    }
    ...зелёные горят.
    ----------------------

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

  2. #2
    Зашедший Аватар для =FPS=Olega
    Регистрация
    15.06.2005
    Адрес
    Москва
    Возраст
    51
    Сообщений
    278

    Re: Штрафбат для бросивших самолет в онлайне (скрипт)

    Т.е. надо будет прыгать, а потом выходить? Просто во время полета может возникнуть срочное дело и нужно будет срочно отойти, - как быть? У меня такое часто бывает, например.
    i5 2500K/GA-P67A-UD4/8 Gb/Leadtek GTX 570 1280Mb/CRT 19" 1600x1200x75/Win7 64bit Pro SP1/Trackir4pro/Клавиатура.

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

    Re: Штрафбат для бросивших самолет в онлайне (скрипт)

    Цитата Сообщение от =FPS=Olega Посмотреть сообщение
    Т.е. надо будет прыгать, а потом выходить? Просто во время полета может возникнуть срочное дело и нужно будет срочно отойти, - как быть? У меня такое часто бывает, например.
    Например, можно прыгать или не выходить из самолета. Тот, кто по вам стреляет в этот момент ведь не виноват, что у вас дело.

    Между сеансами игры штраф видимо сбрасывается.
    ...зелёные горят.
    ----------------------

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

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

    Re: Штрафбат для бросивших самолет в онлайне (скрипт)

    Исправлено с учетом парашютировавшихся
    Код:
    using System;
    using maddox.game;
    using maddox.game.world;
    using System.Collections.Generic;
    
    
    public class Mission : AMission
    {
    
        const int TotalArrestTime = 30;  // Time in seconds
    
        public class prisonCell
        {
            public Player Prisoner { get; set; }
            public DateTime JailTime { get; set; }
            public bool Removable { get; set; }
        }
    
        public List<prisonCell> PrisonCamp = new List<prisonCell>();
    
    
        public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
        {
            base.OnPlaceEnter(player, actor, placeIndex);
    
            if (actor == null) // if player bailed out the actor is null so remove him from prison
            {
                if (PrisonCamp.Count != 0)
                {
                    foreach (prisonCell pri in PrisonCamp)
                    {
                        if (pri.Prisoner == player)
                        {
                                pri.Removable = true;
                        }
                    }
                    PrisonCamp.RemoveAll(item => item.Removable == true);
                }
            }
    
            if (PrisonCamp.Count != 0)
            {
                foreach (prisonCell pri in PrisonCamp)
                {
                    if (pri.Prisoner == player)
                    {
                        TimeSpan ArrestTime = DateTime.Now.Subtract(pri.JailTime);
    
                        if (ArrestTime.TotalSeconds < TotalArrestTime)
                        {
                            GamePlay.gpLogServer(null, "Player: {0} get a {1} sec. penalty for leaving Airplane in flight\n", new object[] { player.Name(), TotalArrestTime });
                            GamePlay.gpHUDLogCenter(new Player[] { player }, "{0} you are under Arrest!", new object[] { player.Name() });
                            (actor as AiAircraft).hitNamed(part.NamedDamageTypes.FuelPumpFailure);
                        
                        }
                        else
                        {
                            pri.Removable = true;
                        }
                        
                    }
                }
    
                PrisonCamp.RemoveAll(item => item.Removable == true);
            }
        }
    
        public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex)
        {
            base.OnPlaceLeave(player, actor, placeIndex);
    
            if ((actor as AiAircraft).IsAirborne())
            {
    
                prisonCell NewPrisoner = new prisonCell();
                NewPrisoner.Prisoner = player;
                NewPrisoner.JailTime = DateTime.Now;
    
                PrisonCamp.Add(NewPrisoner);
            }
        }
    }
    ...зелёные горят.
    ----------------------

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

  5. #5
    Бортмеханик Аватар для Baur
    Регистрация
    18.02.2006
    Адрес
    Sochi, Adler
    Возраст
    48
    Сообщений
    1,060

    Re: Штрафбат для бросивших самолет в онлайне (скрипт)

    Цитата Сообщение от -atas- Посмотреть сообщение
    Запрещает вылет на новом самолете для тех кто бросил старый самолет в воздухе, выйдя в меню.
    О, очень хорошая штука!!! Не раз такое наблюдал - не честно и обидно!

    А это на сервере прописывают?
    Intel Core(TM)2 Duo CPU E8400 @ 3.00GHz , RAM DDR3 2x4Gb , ZOTAC GeForce GTX 580 AMP 1536 MBytes , Win7 U 64

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

    Re: Штрафбат для бросивших самолет в онлайне (скрипт)

    Цитата Сообщение от Baur Посмотреть сообщение
    А это на сервере прописывают?
    Да.
    ...зелёные горят.
    ----------------------

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

  7. #7
    Милиционер Аватар для MEHT
    Регистрация
    26.08.2010
    Адрес
    New York
    Сообщений
    598

    Re: Штрафбат для бросивших самолет в онлайне (скрипт)

    Прекрасный код. Пропишите еще им расстрел, что бы не козлили.
    ASUS P8P67, i7 2600K, GeForce GTX 580 1.5gb, RAM 8gb, Win7 x64 Pro. , Samsung 55" LED 3D, Кабина-проект "Альбатрос", TrackIR 5, Стюардеса Наташа.

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

    Re: Штрафбат для бросивших самолет в онлайне (скрипт)

    Добавлено очередное обновление штрафбата, а также еще один новый скрипт, пишущий в чат, кого на самом деле сбили, а не "Сбит ИИ", как сейчас.

    http://forum.1cpublishing.eu/showthr...t=25996&page=3
    ...зелёные горят.
    ----------------------

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

  9. #9

    Re: Штрафбат для бросивших самолет в онлайне (скрипт)

    IsAirborne() в бете заработал как надо?

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

    Re: Штрафбат для бросивших самолет в онлайне (скрипт)

    Говорят, что да.
    ...зелёные горят.
    ----------------------

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

Ваши права

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