Anti Armour Cheat -
[Saint] - 22.07.2010
подключение необходимых инклудов для работы анти чита
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:
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);
}
...
ну вот вроде и всё =)
Re: Anti Armour Cheat -
Romanius - 22.07.2010
а что мешает вместо таймера использовать OnPlayerUpdate?
Re: Anti Armour Cheat -
[Saint] - 22.07.2010
Quote:
Originally Posted by romanius
а что мешает вместо таймера использовать onplayerupdate?
|
вы мне мозг решили вынести этим вопросом?
Quote:
Originally Posted by [saint]
не хочу я юзать onplayerupdate т.к. при лагах в сети он глючит и вместе с ним глючит и анти чит, а когда через таймер то всё работает стабильно и ошибок не возникает.
|
Re: Anti Armour Cheat -
Romanius - 22.07.2010
ну извини я ту тему не смотрел еще
када сообщение писал
Re: Anti Armour Cheat -
[Saint] - 22.07.2010
да ладно проехали, кстате я тут забыл учесть ещё 1 момент, если у вас в моде используется стандартные аммуниции, то при покупки брони скорее всего анти чит посчитает это за чит, просто у меня в моде они отключены. и пофиксить это я думаю не получится... (хотя если всё же очень сильно постараться то возможно)
Re: Anti Armour Cheat -
Romanius - 22.07.2010
я счас пишу мод и там система левелов (то есть как в думе) сначало брони нет вообще и жизни 25%
и аммунаций нет вообще (все построил на диалогах так удобнее) и в каждой аммунации стоит бот и так же чекпоинт некоторые игроки даже не замечают подвох, а некоторые поигравшие на моем сервере игроки (видимо админы) потом спрашивают на разынх форумах как заменть стандартное меню в аммо на свое
Re: Anti Armour Cheat -
[Saint] - 22.07.2010
так сделано почти на каждом нормальном сервере...
если очень сильно захотеть то можно сделать и меню, и аммо, и все действия бота (анимации + движение объектов когда он достаёт оружие из под прилавка), как по стандарту и будет всё точно таким как в стандарте и разницу врятли кто заметит =)
Re: Anti Armour Cheat -
DANGER1979 - 23.07.2010
Про ботов. Нагружать сервер просто стоящим ботами во всех амунициях, чикенах, пицериях, бургерах нет ни какого смысла. Есть 3 вида амуниций, но на карте их 8 и каждая использует свой виртуальный мир. Соответственно только для амуниций тебе придётся поставить 8 ботов. Сделать анимации у ботов при выборе пункта самопального меню - куча гемороя. Потом ещё добавить 9 ботов для бургеров, 9 для клюкинов, и 9 для пицерий. Итого ради простой эстетики необходимо будет добавить 35 ботов. Это кощунство. Также не забываем про бары и магазины. Я на сервере оставил только 4 стриптизершы, и то только в одном стриптиз клубе. В итоге людям они не нужны, т.к. этот стриптиз клуб всегда пустой. Весь народ тусуется в Джизи. А вот транспортные боты - это совсем другой разговор.
По теме. В скрипте не предусмотрено выдача брони тачкой 427,"Enforcer" со всеми вытекающими.
Re: Anti Armour Cheat -
ZiGGi - 23.07.2010
Quote:
Originally Posted by DANGER1979
Есть 3 вида амуниций
|
четыре
Re: Anti Armour Cheat -
[Saint] - 23.07.2010
Quote:
Originally Posted by DANGER1979
По теме. В скрипте не предусмотрено выдача брони тачкой 427,"Enforcer" со всеми вытекающими.
|
for blinds
Quote:
Originally Posted by [Saint]
в игре есть такой момент, когда игрок садится в полицейский фургон (енфорсер) на место водителя ему даётся броне жилет, чтобы анти чит не посчитал это за чит вам необходимо использовать данный код:
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
Есть 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;
}
а потом уже говори...
Re: Anti Armour Cheat -
Romanius - 23.07.2010
если ты не смог седлать не говори что я не смог. я прекрасно все сделал и анимации у меня даже бот по амуниции ходит пушки показывает и рассказывает о них
Re: Anti Armour Cheat -
[Saint] - 23.07.2010
это уже офф-топ пошел...
Re: Anti Armour Cheat -
DANGER1979 - 23.07.2010
Quote:
Originally Posted by romanius
если ты не смог седлать не говори что я не смог. я прекрасно все сделал и анимации у меня даже бот по амуниции ходит пушки показывает и рассказывает о них
|
и весь сервер слушает это чушь, как 1 бот флудит в общий чат. :d а если несколкьо ботов, то чат разрывается
Re: Anti Armour Cheat -
MX_Master - 23.07.2010
* не забудьте померяццо письками раз такая тема пошла (намек: завязывайте)
* о вкусах не спорят, на вкус и цвет разным людям скрипта нет, всегда есть недовольные
советую добавить проверку на посадку в енфорсер
Re: Anti Armour Cheat -
[Saint] - 23.07.2010
Quote:
Originally Posted by mx_master
советую добавить проверку на посадку в енфорсер
|
ещё один.... да вы издеваетесь чтоли? или реально уже ослепли, смотрите внимательней 1й пост данной темы!
Re: Anti Armour Cheat -
MX_Master - 23.07.2010
мое дело смотреть на все посты, простите, если упустил, когда мельком пробегал и первый пост
мне тока неясно, почему эта тема является туториалом? релизы вышли с моды или тяжко оформлять и доводить все до логической версии?
Re: Anti Armour Cheat -
[Saint] - 23.07.2010
а как разница? кому надо тот поймёт и всё сделает правильно (всё описано доступным языком),
нужно же хоть немного и своей головой думать, а не копипастить всё готовенькое...
Re: Anti Armour Cheat -
MX_Master - 23.07.2010
в продолжении оффтопа по поводу туториалов..
дык, сие произведение почти каждый из вас может написать, причем, даже лучше. вот получается, что все своей головой и думают, создают шедевры, а в релизах и туториалах лежат вот такие вот произведения, а ля "додумай сам".
у многих из нас просто есть такое понятие как "я создал и никому не отдам" )) правда, ведь? вот почему славятся скрипты забугорных писателей скажите? потому что они создают свои шедевры и отдают их всем. но мы не такие и я это заметил очень давно ((:
Re: Anti Armour Cheat -
ZiGGi - 23.07.2010
Quote:
Originally Posted by mx_master
у многих из нас просто есть такое понятие как "я создал и никому не отдам" )) правда, ведь? вот почему славятся скрипты забугорных писателей скажите? потому что они создают свои шедевры и отдают их всем. но мы не такие и я это заметил очень давно ((:
|
мы же русские -> мы нищие -> нам нужно навариться на всём, где можно:d
Re: Anti Armour Cheat -
[Saint] - 23.07.2010
MX_Master, а что тут додумывать?
ну если вам так трудно поместить всё что я описал в 1м посте в ваш игровой мод
или же сделать это в FS или INC, то тут уж вы меня извините - это уже ваша лень не даёт вам покоя...