ByFly GTA: SA GangWar -
OstGot - 12.03.2016
ByFly GTA: SA GangWar v3.9 (r16)
Собственно, настал тот момент, когда мне нужно было сделать что-то более глобальное, например мод.
Недолго думая я взялся делать мод в жанре TDM: копию мода того сервера, на котором я начинал играть.
И я совру, если скажу, что делал всё только по памяти и скриншотам - многие системы и маппинг я взял из паблика, хотя и существенно переработал всё это.
Итак, рад представить вам возрождение мода
ByFly GTA: SA GangWar.
Важные примечания- Сервер на файлах
- ЛАМО (двуручное оружие) запрещено
- Никаких систем доната, 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
Зависимости
Для работы мода требуются:
- mxINI
- GetVehicleColor
Все нужные библиотеки в архиве с модом.
Скачать
GitHub
Установка- Распакуйте скачанный архив
- В server.crg измените значение maxplayers на нужное вам количество игроков
- В GangWar.pwn (в самом начале) измените значение MAX_PLAYERS на нужное вам количество игроков
- Запустите сервер, зайдите на него и зарегистрируйтесь, потом выйдите
- В 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
Удачи!
Re: ByFly GTA: SA GangWar -
Diman777 - 12.03.2016
-
Антимат обходим. Например я пишу в чат: "Где находится барсук?" - система блокирует слово "барсук", на выходе я вижу уже: "Где находится бар***?". Пишу: "бляха", а в чате "***ха".
-
Воздушный шар можно запустить где угодно, т.е. я могу его запустить вообще находясь в другом городе. На сколько я понял нужна проверка на нахождение игрока внутри шара. И вообще было бы прикольно, чтобы шар мог взлетать по нажатию клавиши (замена команде), или чтобы шар сам взлетал по таймеру.
- При выходе из
дм не сохраняется прежняя позиция игрока.
- Нет
скриншотов в теме.
А так в принципе неплохой мод, код аккуратен, нормально)
Re: ByFly GTA: SA GangWar -
Romz - 13.03.2016
Почему античиты решил написать отдельно в моде? Почему не используешь
свой античит?
Re: ByFly GTA: SA GangWar -
OstGot - 13.03.2016
Quote:
Originally Posted by Diman777
- Антимат обходим. Например я пишу в чат: "Где находится барсук?" - система блокирует слово "барсук", на выходе я вижу уже: "Где находится бар***?". Пишу: "бляха", а в чате "***ха".
- Воздушный шар можно запустить где угодно, т.е. я могу его запустить вообще находясь в другом городе. На сколько я понял нужна проверка на нахождение игрока внутри шара. И вообще было бы прикольно, чтобы шар мог взлетать по нажатию клавиши (замена команде), или чтобы шар сам взлетал по таймеру.
- При выходе из дм не сохраняется прежняя позиция игрока.
- Нет скриншотов в теме.
А так в принципе неплохой мод, код аккуратен, нормально)
|
Почти про всё это знал, и оставил так только потому, что старался делать как можно более правдоподобную копию. Единственное, воздушный шар поправлю (проверку на расстояние запилю в следующем релизе).
Спасибо
Quote:
Originally Posted by Kolstin
Почему античиты решил написать отдельно в моде? Почему не используешь свой античит?
|
Мой античит реагирует даже на самые минимальные подозрения, иногда даже слишком минимальные. Потому решил сделать более щадящий античит с минимум ложных. Да и тем более далеко не все античиты из Nex-AC нужны для дм сервера.
Re: ByFly GTA: SA GangWar -
OstGot - 15.03.2016
Новая версия - r2
* Проверка на расстояние до воздушного шара при его запуске
* Протюнингованы все тачки в Stunt Park
* Добавлен общак бандам и возможность вызывать другие банды на поединок
* Исправлена команда /banip (баг с баном подсети)
* Добавлены сообщения об одерживании победы одной бандой над другой
* Максимальное количество игроков по умолчанию изменено на 100
Re: ByFly GTA: SA GangWar -
OstGot - 18.03.2016
Новая версия - r3
* Добавлена команда /spikes (шипы)
* Добавлены новые пункты в статистику игрока (/stats)
* Улучшен антимат и добавлены новые запрещённые слова
* Добавлены новые места в меню телепортации в аэропортах
* Добавлены новые "звания" при достижении определённого количества убийств
* Теперь в общаке банды можно хранить и DM-очки
Re: ByFly GTA: SA GangWar -
OstGot - 21.03.2016
Новая версия - r4
* Общак банды теперь вызывается из команды /gang
* Исправлены вылеты при компиляции на стандартном компиляторе
* Исправлено меню тюнинга для некоторых моделей авто в /tune
* Теперь управление автомобилем на клавиши не вызывает анти-спам
* Небольшая оптимизация диалогов
Re: ByFly GTA: SA GangWar -
OstGot - 28.03.2016
Новая версия - r5
* Убрано большое количество машин, в основном в деревнях (было около 1900 машин, лимит 2к)
Re: ByFly GTA: SA GangWar -
TheMallard - 15.04.2016
/deleted
Re: ByFly GTA: SA GangWar -
OstGot - 04.06.2016
Новая версия - r6
* Добавлено логирование наиболее важных действий
* Небольшая оптимизация
Re: ByFly GTA: SA GangWar -
OstGot - 30.07.2016
Новая версия - r7
* Исправлен баг в PvP-системе
* Обновлен исправленный инклуд mxINI (за фикс спасибо ziggi)
Re: ByFly GTA: SA GangWar -
OstGot - 03.01.2017
Новая версия - r8
* Немного доработан антимат
Re: ByFly GTA: SA GangWar -
Bombo - 03.01.2017
Quote:
Originally Posted by OstGot
Новая версия - r8
* Немного доработан антимат
|
Сделал у себя на сервере замену нехороших слов на нечто вроде:
или:
Желание обойти мой антимат пропадает уже после первой-второй попытки.
Re: ByFly GTA: SA GangWar -
stabker - 03.01.2017
Как будто мат нужно запрещать
Re: ByFly GTA: SA GangWar -
Diman777 - 03.01.2017
PHP Code:
public OnPlayerText(playerid, text[])
{
if(!PlayerInfo[playerid][pLogged]) return SendClientMessage(playerid, COLOR_BORDO, "Чтобы писать в чат, необходимо залогиниться!"), 0;
if(PlayerInfo[playerid][pMute]) return SendClientMessage(playerid, COLOR_RED, "Вы не можете писать в чат, Вы заглушены!"), 0;
if(PlayerInfo[playerid][pFloodTime] > gettime())
{
PlayerInfo[playerid][pFloodCount]++;
if(PlayerInfo[playerid][pFloodCount] >= 3)
{
static string[145];
format(string, sizeof string, "%s(ID: %d) был кикнут. Причина: Спам", PlayerInfo[playerid][pName], playerid);
SendClientMessageToAll(COLOR_BORDO, string);
Kick2(playerid);
return 0;
}
else if(PlayerInfo[playerid][pFloodCount] >= 2) SendClientMessage(playerid, COLOR_RED, "АнтиСпам предупреждение! Дальше кик.");
else SendClientMessage(playerid, COLOR_LIGHTBLUE, "Администрация: не флуди!");
return 0;
}
if(ContainsAnyIP(text))
{
static string[145];
format(string, sizeof string, "SERVER: %s(%d) забанен на сервере. Причина: реклама", PlayerInfo[playerid][pName], playerid);
SendClientMessageToAll(COLOR_BORDO, string);
Ban2(playerid);
return 0;
}
for(new s, i, pos, start, end; s < sizeof Swears; s++)
{
pos = -1;
while((pos = strfuzzyfind(text, Swears[s], pos + 1, start, end)) != -1)
{
for(i = end; i >= start; --i) text[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(string, sizeof string, "* Чат банды %s >> от %s: %s", GName[PlayerInfo[playerid][pGang]], PlayerInfo[playerid][pName], text[1]);
SendClientMessageToGang(PlayerInfo[playerid][pGang], GetPlayerColor(playerid), string);
}
else
{
format(string, sizeof 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(playerid, 1))
{
if(IsEmptyMessage(text[1])) return 0;
static string[145];
format(string, sizeof string, "* Админский чат: %s: %s", PlayerInfo[playerid][pName], text[1]);
SendClientMessageToAdmins(COLOR_LIME, string);
return 0;
}
if(PlayerInfo[playerid][pGang] && GTag[PlayerInfo[playerid][pGang]])
{
static string[145];
format(string, sizeof string, "[%s]%s(%d): {FFFFFF}%s", GName[PlayerInfo[playerid][pGang]], PlayerInfo[playerid][pName], playerid, text);
SendClientMessageToAll(GetPlayerColor(playerid), string);
return 0;
}
static string[145];
format(string, sizeof string, "(%d): %s", playerid, text);
SendPlayerMessageToAll(playerid, string);
return 0;
}
А зачем
static string, а не
new?)
Quote:
"SERVER: %s(%d) забанен на сервере. Причина: реклама"
|
Фигово банить за рекламу сразу. Лучше блокировать сообщение, или чат отключать автоматом на n-минут.
ContainsAnyIP - это вроде MX_Master делал, в ней есть баг, всё равно можно написать текст так, что система ложно подумает, что это ип, => иногда забаниться не виновный игрок.
Quote:
Немного доработан антимат
|
Спустя много времени я пришёл к выводу, что антимат
бесполезен для сервера. А если ещё антимат ложно срабатывает, то это беда. Например у меня на серве разрешено материться, но запрещено оскорблядь. Когда надо админы мутируют игроков по желанию на 5-30 минут. И всё - нет проблем.
Re: ByFly GTA: SA GangWar -
OstGot - 16.02.2017
Извиняюсь за поздний ответ, совсем забыл
Quote:
Originally Posted by Diman777
А зачем static string, а не new?)
|
Память выделяется с ним не из стека. Действительно актуально это только для выделения очень больших локальных массивов, но что-то мне так спокойнее)
Quote:
Originally Posted by Diman777
Фигово банить за рекламу сразу. Лучше блокировать сообщение, или чат отключать автоматом на n-минут.
ContainsAnyIP - это вроде MX_Master делал, в ней есть баг, всё равно можно написать текст так, что система ложно подумает, что это ип, => иногда забаниться не виновный игрок.
|
Насчёт банов согласен, я сам не сторонник раздавать их без проверок, но так было на сервере, приблизительной копией которого является этот мод. Да и тем более бан от сервера идёт только по IP, аккаунт же могут забанить только администраторы.
Делал MX_Master, но я его с самого начала немного изменил, убрав срабатывания на буквы 'О'..'о', 'З'..'з' и подобные, из-за которых действительно было много некорректных подозрений. Сейчас же полностью её переделал (теперь будет считать только числа, значение каждого из которых будет в диапазоне 0..255, как у реального IP).
Quote:
Originally Posted by Diman777
Спустя много времени я пришёл к выводу, что антимат бесполезен для сервера. А если ещё антимат ложно срабатывает, то это беда. Например у меня на серве разрешено материться, но запрещено оскорблядь. Когда надо админы мутируют игроков по желанию на 5-30 минут. И всё - нет проблем.
|
Ну а здесь это уже зависит от многих факторов. На том же рп сервере действительно будет глупо вводить цензуру для чата между игроками, т.к. это будет в ущерб некой реалистичности в некоторых ситуациях, а вот на каком-нибудь дм или дрифт режиме, где чат виден всему серверу, иногда не очень приятно видеть много мусора в нём.
Новая версия - r9
* Улучшена анти-реклама
* При слежке за игроком теперь также обновляется и виртуальный мир
* Улучшена защита от weapon crasher
Re: ByFly GTA: SA GangWar -
stabker - 17.02.2017
В данном случае static используется нелогично. Если хочется, то его можно вынести в самый верх паблика один раз, но объявлять квази-локально столько раз не вижу смысла, ограничивается только область видимости, зато память (хоть и не из стэка) используется расточительно.
Re: ByFly GTA: SA GangWar -
OstGot - 17.02.2017
Quote:
Originally Posted by stabker
В данном случае static используется нелогично. Если хочется, то его можно вынести в самый верх паблика один раз, но объявлять квази-локально столько раз не вижу смысла, ограничивается только область видимости, зато память (хоть и не из стэка) используется расточительно.
|
А ведь правда. Такой стиль их объявления остался ещё с тех пор, как они были локальными, где это было оптимальнее. Спасибо, теперь подобных ситуаций нет
Новая версия - r10
* Оптимизация памяти
Re: ByFly GTA: SA GangWar -
OstGot - 11.06.2017
Новая версия - r11
* Очистка чата теперь чистит чат на 30 сообщений
* Мелкие улучшения
Re: ByFly GTA: SA GangWar -
OstGot - 01.08.2017
Новая версия - r12
* Исправлен баг в меню тюнинга, которое вызывалось для любого транспорта и с любой суммой денег