[GameMode] ByFly GTA: SA GangWar
#1

ByFly GTA: SA GangWar v3.9 (r16)

Собственно, настал тот момент, когда мне нужно было сделать что-то более глобальное, например мод.
Недолго думая я взялся делать мод в жанре TDM: копию мода того сервера, на котором я начинал играть.
И я совру, если скажу, что делал всё только по памяти и скриншотам - многие системы и маппинг я взял из паблика, хотя и существенно переработал всё это.
Итак, рад представить вам возрождение мода ByFly GTA: SA GangWar.

Важные примечания
  1. Сервер на файлах
  2. ЛАМО (двуручное оружие) запрещено
  3. Никаких систем доната, vip, покупок админки и прочего
Особенности
  • 12 стандартных банд
    Грув, Балласы, Ацтеки, Нанги, Вагосы, Копы, Мафия, Байкеры, Триады, Админы, Армия, Клан бандит
    За админов можно входить только имея админку
  • Транспорт на респавнах банд и по штату
    Огромное количество совершенно разного транспорта во всех населённых пунктах
    Некоторый доступен только определённым бандам
  • Гангзоны у каждой банды с возможностью захвата
    Территорию можно захватить, убив членов вражеской банды несколько раз. Таким же образом зону можно и отвоевать
  • Пикапы с оружием, здоровьем и бронёй по карте
    Ещё кое-где присутствует JetPack. ЛАМО-оружие не встречается
  • Гонки с возможностью создания своих из игры
    Также возможность автоматического запуска новой гонки по окончанию предыдущей
    Результаты гонок сохраняются. Победителям награда в виде денег и гоночных очков
  • DM-зоны (8 штук)
    8-я зона отличается от предыдущих: игра ведётся на снайперках и убить можно с 2-х выстрелов
  • Создаваемые игроками банды
    С обширным списком возможностей: от назначения скинов для рангов, до включения/выключения тега банды в чате
    Баги с "перемешиванием" банд у оффлайн игроков исправлены
  • Система PvP с 5-ю аренами
    С возможностью выбора оружия, ставки, наличия брони и т.д.
  • Управление авто на клавиши num (капот, багажник, фары и т.д.)
    Также присутствуют и аналогичные команды для управления, тюнинга и т.д.
  • Телепорты в аэропортах ЛС, СФ, ЛВ
    Из любого аэропорта доступно меню с множеством телепортов
  • Лифт в одном из небоскрёбов в ЛС
    Собственно, взял его основу из стандартного скрипта ls_elevator
  • Рабочее колесо обозрения на пирсе ЛС
    Тоже из стандартных. Команды для запуска отсутствуют, работает без них
  • Воздушный шар, тоже на причале в ЛС
    После его запуска облетает по заданным координатам, после чего возвращается назад
  • Система мин (при наступании взрываются)
    Работают только пешком. При выходе игрока мина удаляется
  • Простенький спидометр
    Простенький, ничего лишнего
В целом, подойдёт для основы.
По коду: стиль везде практически одинаков, с табуляцией проблем нет.
Новичкам, думаю, будет понятен.

Места
  • Парковка со спортивными авто (/stuntpr)
  • Китайский ресторан (/china)
  • Bloodring (/bloodring)
  • BigJump зона (/sjump)
  • SexShop (/sadomazo)
  • Drag зона (/drag)
  • Vip-остров (/vip)
Античиты
Самые основные на мой взгляд:
  • Anti-Dialog Crasher
  • Anti-Bullet Crasher
  • Anti-Advertising
  • Anti-Weapon Hack
  • Anti-Tuning Hack
  • Anti-Dialog Hack
  • Anti-High ping
  • Anti-Money Hack
  • Anti-Spawn kill
  • Anti-Rcon Hack
  • Anti-SpeedHack
  • Anti-SandBox
  • Anti-FlyHack
  • Anti-DriveBy
  • Anti-C bug
  • Anti-Swear
  • Anti-Flood
Скриншоты Обзор
www.youtube.com/watch?v=OO5IgK_6q_w

Зависимости
Для работы мода требуются:
  1. mxINI
  2. GetVehicleColor
Все нужные библиотеки в архиве с модом.

Скачать
GitHub

Установка
  1. Распакуйте скачанный архив
  2. В server.crg измените значение maxplayers на нужное вам количество игроков
  3. В GangWar.pwn (в самом начале) измените значение MAX_PLAYERS на нужное вам количество игроков
  4. Запустите сервер, зайдите на него и зарегистрируйтесь, потом выйдите
  5. В scriptfiles\Users\[ваш никнейм].ini измените значение Admin на 10
Изменения
Code:
r1 - первый релиз

r2 - 15.03.2016
* Проверка на расстояние до воздушного шара при его запуске
* Протюнингованы все тачки в Stunt Park
* Добавлен общак бандам и возможность вызывать другие банды на поединок
* Исправлена команда /banip (баг с баном подсети)
* Добавлены сообщения об одерживании победы одной бандой над другой
* Максимальное количество игроков по умолчанию изменено на 100

r3 - 18.03.2016
* Добавлена команда /spikes (шипы)
* Добавлены новые пункты в статистику игрока (/stats)
* Улучшен антимат и добавлены новые запрещённые слова
* Добавлены новые места в меню телепортации в аэропортах
* Добавлены новые "звания" при достижении определённого количества убийств
* Теперь в общаке банды можно хранить и DM-очки

r4 - 21.03.2016
* Общак банды теперь вызывается из команды /gang
* Исправлены вылеты при компиляции на стандартном компиляторе
* Исправлено меню тюнинга для некоторых моделей авто в /tune
* Теперь управление автомобилем на клавиши не вызывает анти-спам
* Небольшая оптимизация диалогов

r5 - 28.03.2016
* Убрано большое количество машин, в основном в деревнях (было около 1900 машин, лимит 2к)

r6 - 04.06.2016
* Добавлено логирование наиболее важных действий
* Небольшая оптимизация

r7 - 30.07.2016
* Исправлен баг в PvP-системе
* Обновлен исправленный инклуд mxINI (за фикс спасибо ziggi)

r8 - 03.01.2017
* Немного доработан антимат

r9 - 16.02.2017
* Улучшена анти-реклама
* При слежке за игроком теперь также обновляется и виртуальный мир
* Улучшена защита от weapon crasher

r10 - 18.02.2017
* Оптимизация памяти

r11 - 11.06.2017
* Очистка чата теперь чистит чат на 30 сообщений
* Мелкие улучшения

r12 - 01.08.2017
* Исправлен баг в меню тюнинга, которое вызывалось для любого транспорта и с любой суммой денег

r13 - 17.12.2017
* Исправлена проверка на цветовые коды в названии банды, создаваемой игроком
* Мелкие улучшения

r14 - 15.01.2018
* Добавлено логирование всех киков и банов игрока сервером
* Подправлена команда /setname

r15 - 16.01.2018
* Улучшена проверка на цветовые коды в названии банды, создаваемой игроком

r16 - 01.06.2020
* Обновлен инклуд mxINI, вызывавший проблемы с компиляцией на стандартном компиляторе
* Мелкие улучшения
Баги
См. раздел Issues. Если нашли - пишите в эту тему.

Благодарности
Magic_York за советы и помощь
Magic_York, Andrew_York, TheHero, HeavenX, Eduard_Stream, Zoopi, Unisheld, KailloN за помощь в тесте

Использовались работы
  • Vip Island by SiNoK
  • Mine by Apec
  • rRace by Ryder
  • Hot air balloon by adri1
  • Teleport menu by captainjohn
  • Chow's Chinese Restaurant by GrimmjowJJ
  • GangSystem by _TeraN_(ZakMage, modifed by Jekson and ARH[I]VIRUS
  • Ultimate Vehicle Tuning Filescript by Antonio144
  • L Admin by LethaL
За основу был взят мод Los Santos Gang Wars by LethaL

Удачи!
Reply
#2

- Антимат обходим. Например я пишу в чат: "Где находится барсук?" - система блокирует слово "барсук", на выходе я вижу уже: "Где находится бар***?". Пишу: "бляха", а в чате "***ха".
- Воздушный шар можно запустить где угодно, т.е. я могу его запустить вообще находясь в другом городе. На сколько я понял нужна проверка на нахождение игрока внутри шара. И вообще было бы прикольно, чтобы шар мог взлетать по нажатию клавиши (замена команде), или чтобы шар сам взлетал по таймеру.
- При выходе из дм не сохраняется прежняя позиция игрока.
- Нет скриншотов в теме.
А так в принципе неплохой мод, код аккуратен, нормально)
Reply
#3

Почему античиты решил написать отдельно в моде? Почему не используешь свой античит?
Reply
#4

Quote:
Originally Posted by Diman777
View Post
- Антимат обходим. Например я пишу в чат: "Где находится барсук?" - система блокирует слово "барсук", на выходе я вижу уже: "Где находится бар***?". Пишу: "бляха", а в чате "***ха".
- Воздушный шар можно запустить где угодно, т.е. я могу его запустить вообще находясь в другом городе. На сколько я понял нужна проверка на нахождение игрока внутри шара. И вообще было бы прикольно, чтобы шар мог взлетать по нажатию клавиши (замена команде), или чтобы шар сам взлетал по таймеру.
- При выходе из дм не сохраняется прежняя позиция игрока.
- Нет скриншотов в теме.
А так в принципе неплохой мод, код аккуратен, нормально)
Почти про всё это знал, и оставил так только потому, что старался делать как можно более правдоподобную копию. Единственное, воздушный шар поправлю (проверку на расстояние запилю в следующем релизе).
Спасибо

Quote:
Originally Posted by Kolstin
View Post
Почему античиты решил написать отдельно в моде? Почему не используешь свой античит?
Мой античит реагирует даже на самые минимальные подозрения, иногда даже слишком минимальные. Потому решил сделать более щадящий античит с минимум ложных. Да и тем более далеко не все античиты из Nex-AC нужны для дм сервера.
Reply
#5

Новая версия - r2

* Проверка на расстояние до воздушного шара при его запуске
* Протюнингованы все тачки в Stunt Park
* Добавлен общак бандам и возможность вызывать другие банды на поединок
* Исправлена команда /banip (баг с баном подсети)
* Добавлены сообщения об одерживании победы одной бандой над другой
* Максимальное количество игроков по умолчанию изменено на 100
Reply
#6

Новая версия - r3

* Добавлена команда /spikes (шипы)
* Добавлены новые пункты в статистику игрока (/stats)
* Улучшен антимат и добавлены новые запрещённые слова
* Добавлены новые места в меню телепортации в аэропортах
* Добавлены новые "звания" при достижении определённого количества убийств
* Теперь в общаке банды можно хранить и DM-очки
Reply
#7

Новая версия - r4

* Общак банды теперь вызывается из команды /gang
* Исправлены вылеты при компиляции на стандартном компиляторе
* Исправлено меню тюнинга для некоторых моделей авто в /tune
* Теперь управление автомобилем на клавиши не вызывает анти-спам
* Небольшая оптимизация диалогов
Reply
#8

Новая версия - r5

* Убрано большое количество машин, в основном в деревнях (было около 1900 машин, лимит 2к)
Reply
#9

/deleted
Reply
#10

Новая версия - r6

* Добавлено логирование наиболее важных действий
* Небольшая оптимизация
Reply
#11

Новая версия - r7

* Исправлен баг в PvP-системе
* Обновлен исправленный инклуд mxINI (за фикс спасибо ziggi)
Reply
#12

Новая версия - r8

* Немного доработан антимат
Reply
#13

Quote:
Originally Posted by OstGot
View Post
Новая версия - r8

* Немного доработан антимат
Сделал у себя на сервере замену нехороших слов на нечто вроде:
Quote:

"простите меня, я дебил"

или:
Quote:

"вот я дурак"

Желание обойти мой антимат пропадает уже после первой-второй попытки.
Reply
#14

Как будто мат нужно запрещать
Reply
#15

PHP Code:
public OnPlayerText(playeridtext[])
{
    if(!
PlayerInfo[playerid][pLogged]) return SendClientMessage(playeridCOLOR_BORDO"Чтобы писать в чат, необходимо залогиниться!"), 0;
    if(
PlayerInfo[playerid][pMute]) return SendClientMessage(playeridCOLOR_RED"Вы не можете писать в чат, Вы заглушены!"), 0;
    if(
PlayerInfo[playerid][pFloodTime] > gettime())
    {
        
PlayerInfo[playerid][pFloodCount]++;
        if(
PlayerInfo[playerid][pFloodCount] >= 3)
        {
            static 
string[145];
            
format(stringsizeof string"%s(ID: %d) был кикнут. Причина: Спам"PlayerInfo[playerid][pName], playerid);
            
SendClientMessageToAll(COLOR_BORDOstring);
            
Kick2(playerid);
            return 
0;
        }
        else if(
PlayerInfo[playerid][pFloodCount] >= 2SendClientMessage(playeridCOLOR_RED"АнтиСпам предупреждение! Дальше кик.");
        else 
SendClientMessage(playeridCOLOR_LIGHTBLUE"Администрация: не флуди!");
        return 
0;
    }
    if(
ContainsAnyIP(text))
    {
        static 
string[145];
        
format(stringsizeof string"SERVER: %s(%d) забанен на сервере. Причина: реклама"PlayerInfo[playerid][pName], playerid);
        
SendClientMessageToAll(COLOR_BORDOstring);
        
Ban2(playerid);
        return 
0;
    }
    for(new 
siposstartendsizeof Swearss++)
    {
        
pos = -1;
        while((
pos strfuzzyfind(textSwears[s], pos 1startend)) != -1)
        {
            for(
end>= start; --itext[i] = '*';
        }
    }
    if(
PlayerInfo[playerid][pCaps]) UpperToLower(text);
    
PlayerInfo[playerid][pFloodTime] = gettime() + 1;
    if(
IsEmptyMessage(text)) return 0;
    if(
text[0] == '!')
    {
        if(
IsEmptyMessage(text[1])) return 0;
        static 
string[145];
        if(
PlayerInfo[playerid][pGang])
        {
            
format(stringsizeof string"* Чат банды %s >> от %s: %s"GName[PlayerInfo[playerid][pGang]], PlayerInfo[playerid][pName], text[1]);
            
SendClientMessageToGang(PlayerInfo[playerid][pGang], GetPlayerColor(playerid), string);
        }
        else
        {
            
format(stringsizeof string"* Чат банды %s >> от %s: %s"DefaultGangNames[PlayerInfo[playerid][pTeam]], PlayerInfo[playerid][pName], text[1]);
            
SendClientMessageToTeam(PlayerInfo[playerid][pTeam], GetPlayerColor(playerid), string);
        }
        return 
0;
    }
    if(
text[0] == '#' && IsPlayerAdminEx(playerid1))
    {
        if(
IsEmptyMessage(text[1])) return 0;
        static 
string[145];
        
format(stringsizeof string"* Админский чат: %s: %s"PlayerInfo[playerid][pName], text[1]);
        
SendClientMessageToAdmins(COLOR_LIMEstring);
        return 
0;
    }
    if(
PlayerInfo[playerid][pGang] && GTag[PlayerInfo[playerid][pGang]])
    {
        static 
string[145];
        
format(stringsizeof string"[%s]%s(%d): {FFFFFF}%s"GName[PlayerInfo[playerid][pGang]], PlayerInfo[playerid][pName], playeridtext);
        
SendClientMessageToAll(GetPlayerColor(playerid), string);
        return 
0;
    }
    static 
string[145];
    
format(stringsizeof string"(%d): %s"playeridtext);
    
SendPlayerMessageToAll(playeridstring);
    return 
0;

А зачем static string, а не new?)

Quote:

"SERVER: %s(%d) забанен на сервере. Причина: реклама"

Фигово банить за рекламу сразу. Лучше блокировать сообщение, или чат отключать автоматом на n-минут.
ContainsAnyIP - это вроде MX_Master делал, в ней есть баг, всё равно можно написать текст так, что система ложно подумает, что это ип, => иногда забаниться не виновный игрок.

Quote:

Немного доработан антимат

Спустя много времени я пришёл к выводу, что антимат бесполезен для сервера. А если ещё антимат ложно срабатывает, то это беда. Например у меня на серве разрешено материться, но запрещено оскорблядь. Когда надо админы мутируют игроков по желанию на 5-30 минут. И всё - нет проблем.
Reply
#16

Извиняюсь за поздний ответ, совсем забыл

Quote:
Originally Posted by Diman777
View Post
А зачем static string, а не new?)
Память выделяется с ним не из стека. Действительно актуально это только для выделения очень больших локальных массивов, но что-то мне так спокойнее)

Quote:
Originally Posted by Diman777
View Post
Фигово банить за рекламу сразу. Лучше блокировать сообщение, или чат отключать автоматом на n-минут.
ContainsAnyIP - это вроде MX_Master делал, в ней есть баг, всё равно можно написать текст так, что система ложно подумает, что это ип, => иногда забаниться не виновный игрок.
Насчёт банов согласен, я сам не сторонник раздавать их без проверок, но так было на сервере, приблизительной копией которого является этот мод. Да и тем более бан от сервера идёт только по IP, аккаунт же могут забанить только администраторы.
Делал MX_Master, но я его с самого начала немного изменил, убрав срабатывания на буквы 'О'..'о', 'З'..'з' и подобные, из-за которых действительно было много некорректных подозрений. Сейчас же полностью её переделал (теперь будет считать только числа, значение каждого из которых будет в диапазоне 0..255, как у реального IP).

Quote:
Originally Posted by Diman777
View Post
Спустя много времени я пришёл к выводу, что антимат бесполезен для сервера. А если ещё антимат ложно срабатывает, то это беда. Например у меня на серве разрешено материться, но запрещено оскорблядь. Когда надо админы мутируют игроков по желанию на 5-30 минут. И всё - нет проблем.
Ну а здесь это уже зависит от многих факторов. На том же рп сервере действительно будет глупо вводить цензуру для чата между игроками, т.к. это будет в ущерб некой реалистичности в некоторых ситуациях, а вот на каком-нибудь дм или дрифт режиме, где чат виден всему серверу, иногда не очень приятно видеть много мусора в нём.


Новая версия - r9

* Улучшена анти-реклама
* При слежке за игроком теперь также обновляется и виртуальный мир
* Улучшена защита от weapon crasher
Reply
#17

В данном случае static используется нелогично. Если хочется, то его можно вынести в самый верх паблика один раз, но объявлять квази-локально столько раз не вижу смысла, ограничивается только область видимости, зато память (хоть и не из стэка) используется расточительно.
Reply
#18

Quote:
Originally Posted by stabker
View Post
В данном случае static используется нелогично. Если хочется, то его можно вынести в самый верх паблика один раз, но объявлять квази-локально столько раз не вижу смысла, ограничивается только область видимости, зато память (хоть и не из стэка) используется расточительно.
А ведь правда. Такой стиль их объявления остался ещё с тех пор, как они были локальными, где это было оптимальнее. Спасибо, теперь подобных ситуаций нет


Новая версия - r10

* Оптимизация памяти
Reply
#19

Новая версия - r11

* Очистка чата теперь чистит чат на 30 сообщений
* Мелкие улучшения
Reply
#20

Новая версия - r12

* Исправлен баг в меню тюнинга, которое вызывалось для любого транспорта и с любой суммой денег
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)