[Include] Anti Armour Cheat
#1

подключение необходимых инклудов для работы анти чита

pawn Code:
#include <a_samp>
#include <a_players>
#include <time>
создаём новую переменную

pawn Code:
new Float: PlayerArmour[MAX_PLAYERS]; // переменная в которой хранится бронь
создаём новые функции

pawn Code:
stock SetPlayerArmourAC(playerid, Float:armour)
{
    PlayerArmour[playerid] = armour;
    SetPlayerArmour(playerid, armour);
    return 1;
}

stock GetPlayerArmourAC(playerid, &Float:armour)
{
    armour = PlayerArmour[playerid];
    return 1;
}
функция анти чита

pawn Code:
stock AntiArmourCheat()
{
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        if (IsPlayerConnected(i) && !IsPlayerNPC(i))
        {
            new Float: arm;
            GetPlayerArmour(i, arm);
            if (arm < PlayerArmour[i]) return SetPlayerArmourAC(i, arm);
            if (arm > PlayerArmour[i])
            {
                new string[256];
                new year, month,day;
                getdate(year, month, day);
                new hour, minuite, second;
                gettime(hour, minuite, second);
                new name[MAX_PLAYER_NAME];
                GetPlayerName(playerid, name, sizeof(name));
                format(string, sizeof(string), "SERVER: %s был вышвырнут с сервера! Причина: Использование Читов: Armour! | [%d/%d/%d | %d:%d]", name, day, month, year, hour, minuite);
                SendClientMessageToAll(0xFF0000FF, string);
                Kick(i);
            }
        }
    }
    return 1;
}
анти чит готов, теперь осталось подключить его в ваш мод и настроить.

в налало мода для замены всех стандартных функций на новые из анти чита.
pawn Code:
#define SetPlayerArmour SetPlayerArmourAC
#define GetPlayerArmour GetPlayerArmourAC
cоздаём новый секундный, повторяющийся таймер в OnGameModeInit для работы анти чита
pawn Code:
SetTimer("AntiCheat", 1000, 1);
создаём новый public который запускается таймером, в него потом вы можете добавлять другие анти читы.
pawn Code:
forward AntiCheat();
public AntiCheat()
{
    AntiArmourCheat();
}
теперь анти чит полностью работоспособен осталось настроить,
в игре есть такой момент, когда игрок садится в полицейский фургон (енфорсер) на место водителя ему даётся броне жилет, чтобы анти чит не посчитал это за чит вам необходимо использовать данный код:

pawn Code:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if (newstate == PLAYER_STATE_DRIVER)
    {
        if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 427)
        {
            SetPlayerArmour(playerid, 100.0);
        }
    }
...
теперь о пиках брони.
как создавать пикапы чтобы анти чит не считал их читом.

новая переменная(массив, если пикап не 1) для пикапов....
pawn Code:
new ArmourPickup[3];
pawn Code:
ArmourPickup[0] = CreatePickup(1242, 19, PosX, PosY, PosZ, -1); // обязательно 2й параметр должен быть 19
ArmourPickup[1] = CreatePickup(1242, 19, PosX, PosY, PosZ, -1);
ArmourPickup[2] = CreatePickup(1242, 19, PosX, PosY, PosZ, -1);
подбор пикапов игроком
pawn Code:
public OnPlayerPickUpPickup(playerid, pickupid)
{
    if (pickupid >= ArmourPickup[0] && pickupid <= ArmourPickup[2])
    {
        SetPlayerArmour(playerid, 100.0);
    }
...
ну вот вроде и всё =)
Reply
#2

а что мешает вместо таймера использовать OnPlayerUpdate?
Reply
#3

Quote:
Originally Posted by romanius
View Post
а что мешает вместо таймера использовать onplayerupdate?
вы мне мозг решили вынести этим вопросом?

Quote:
Originally Posted by [saint]
View Post
не хочу я юзать onplayerupdate т.к. при лагах в сети он глючит и вместе с ним глючит и анти чит, а когда через таймер то всё работает стабильно и ошибок не возникает.
Reply
#4

ну извини я ту тему не смотрел еще када сообщение писал
Reply
#5

да ладно проехали, кстате я тут забыл учесть ещё 1 момент, если у вас в моде используется стандартные аммуниции, то при покупки брони скорее всего анти чит посчитает это за чит, просто у меня в моде они отключены. и пофиксить это я думаю не получится... (хотя если всё же очень сильно постараться то возможно)
Reply
#6

я счас пишу мод и там система левелов (то есть как в думе) сначало брони нет вообще и жизни 25% и аммунаций нет вообще (все построил на диалогах так удобнее) и в каждой аммунации стоит бот и так же чекпоинт некоторые игроки даже не замечают подвох, а некоторые поигравшие на моем сервере игроки (видимо админы) потом спрашивают на разынх форумах как заменть стандартное меню в аммо на свое
Reply
#7

так сделано почти на каждом нормальном сервере...
если очень сильно захотеть то можно сделать и меню, и аммо, и все действия бота (анимации + движение объектов когда он достаёт оружие из под прилавка), как по стандарту и будет всё точно таким как в стандарте и разницу врятли кто заметит =)
Reply
#8

Про ботов. Нагружать сервер просто стоящим ботами во всех амунициях, чикенах, пицериях, бургерах нет ни какого смысла. Есть 3 вида амуниций, но на карте их 8 и каждая использует свой виртуальный мир. Соответственно только для амуниций тебе придётся поставить 8 ботов. Сделать анимации у ботов при выборе пункта самопального меню - куча гемороя. Потом ещё добавить 9 ботов для бургеров, 9 для клюкинов, и 9 для пицерий. Итого ради простой эстетики необходимо будет добавить 35 ботов. Это кощунство. Также не забываем про бары и магазины. Я на сервере оставил только 4 стриптизершы, и то только в одном стриптиз клубе. В итоге людям они не нужны, т.к. этот стриптиз клуб всегда пустой. Весь народ тусуется в Джизи. А вот транспортные боты - это совсем другой разговор.

По теме. В скрипте не предусмотрено выдача брони тачкой 427,"Enforcer" со всеми вытекающими.
Reply
#9

Quote:
Originally Posted by DANGER1979
View Post
Есть 3 вида амуниций
четыре
Reply
#10

Quote:
Originally Posted by DANGER1979
View Post
По теме. В скрипте не предусмотрено выдача брони тачкой 427,"Enforcer" со всеми вытекающими.
for blinds

Quote:
Originally Posted by [Saint]
View Post
в игре есть такой момент, когда игрок садится в полицейский фургон (енфорсер) на место водителя ему даётся броне жилет, чтобы анти чит не посчитал это за чит вам необходимо использовать данный код:

pawn Code:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if (newstate == PLAYER_STATE_DRIVER)
    {
        if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 427)
        {
            SetPlayerArmour(playerid, 100.0);
        }
    }
...
про ботов, аммуниции, пиццерии и т.д., всё реализуемо и можно реализировать это динамически,
то есть например если в аммуниции никого нету, то и бот там не нужен....

Quote:
Originally Posted by DANGER1979
View Post
Есть 3 вида аммуниций, но на карте их 8 и каждая использует свой виртуальный мир.
чушь, снало проверяй:,

pawn Code:
if (strcmp(cmdtext, "/myvirtualworld", true) == 0)
{
    format(string,sizeof(string), "SERVER: Ваш Виртуальный Мир: [%d]", GetPlayerVirtualWorld(playerid));
    SendClientMessage(playerid, COLOR_SAMP, string);
    return 1;
}
а потом уже говори...
Reply
#11

если ты не смог седлать не говори что я не смог. я прекрасно все сделал и анимации у меня даже бот по амуниции ходит пушки показывает и рассказывает о них
Reply
#12

это уже офф-топ пошел...
Reply
#13

Quote:
Originally Posted by romanius
View Post
если ты не смог седлать не говори что я не смог. я прекрасно все сделал и анимации у меня даже бот по амуниции ходит пушки показывает и рассказывает о них
и весь сервер слушает это чушь, как 1 бот флудит в общий чат. :d а если несколкьо ботов, то чат разрывается
Reply
#14

* не забудьте померяццо письками раз такая тема пошла (намек: завязывайте)
* о вкусах не спорят, на вкус и цвет разным людям скрипта нет, всегда есть недовольные

советую добавить проверку на посадку в енфорсер
Reply
#15

Quote:
Originally Posted by mx_master
View Post
советую добавить проверку на посадку в енфорсер
ещё один.... да вы издеваетесь чтоли? или реально уже ослепли, смотрите внимательней 1й пост данной темы!
Reply
#16

мое дело смотреть на все посты, простите, если упустил, когда мельком пробегал и первый пост

мне тока неясно, почему эта тема является туториалом? релизы вышли с моды или тяжко оформлять и доводить все до логической версии?
Reply
#17

а как разница? кому надо тот поймёт и всё сделает правильно (всё описано доступным языком),
нужно же хоть немного и своей головой думать, а не копипастить всё готовенькое...
Reply
#18

в продолжении оффтопа по поводу туториалов..

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

у многих из нас просто есть такое понятие как "я создал и никому не отдам" )) правда, ведь? вот почему славятся скрипты забугорных писателей скажите? потому что они создают свои шедевры и отдают их всем. но мы не такие и я это заметил очень давно ((:
Reply
#19

Quote:
Originally Posted by mx_master
View Post
у многих из нас просто есть такое понятие как "я создал и никому не отдам" )) правда, ведь? вот почему славятся скрипты забугорных писателей скажите? потому что они создают свои шедевры и отдают их всем. но мы не такие и я это заметил очень давно ((:
мы же русские -> мы нищие -> нам нужно навариться на всём, где можно:d
Reply
#20

MX_Master, а что тут додумывать?

ну если вам так трудно поместить всё что я описал в 1м посте в ваш игровой мод
или же сделать это в FS или INC, то тут уж вы меня извините - это уже ваша лень не даёт вам покоя...
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)