Re: Создание Античита -
CrunkBankS - 04.12.2009
Да я тож думал но никак не выходит, без казино можно прожить, а деньги за трюки чет не охото отключать стант мод. Пришлось анти-чит на оружия только сделать
Re: Создание Античита -
Serafim_sd - 04.12.2009
про спидхак... сделать логирование типа если скорость игрока в машине больше определенного значения (инфернуса с азотом) то запись вносится в лог... если таких записей несколько в них казаны слабые машины, то видимо ясно что это спидхак...
полеты на машине - вычислить самую большую координату на которою можно подняться на машине (вершина горы) и если игрок выше этой координаты (в машине но не в самолете) то тоже вносить в лог, или сразу банить)
какие еще бывают читы?)
Re: Создание Античита -
Serafim_sd - 04.12.2009
чит оружия - например миниган:
просто проверять оружие игрока в слоте 7 (если там базука или миниган) - банан)
Re: Создание Античита -
CrunkBankS - 04.12.2009
аирбреак еще и еще что то
Re: Создание Античита -
heufix - 04.12.2009
Quote:
|
Originally Posted by Serafim_sd
про спидхак... сделать логирование типа если скорость игрока в машине больше определенного значения (инфернуса с азотом) то запись вносится в лог... если таких записей несколько в них казаны слабые машины, то видимо ясно что это спидхак...
|
а не думал что на машине можно спрыгнуть с той же самой горы, и скорость полёта будет больше чем при езде с азотом.
Re: Создание Античита -
MX_Master - 04.12.2009
насчет полетов на тачке хочу заметить - мона проверять угол горизонта от какой-то предыдущей точки до новой точки перемещения, обычно тачки не могут взлетать вверх, стоит учесть, что есть крутые горки, так что угол горизонта при перемещении выше 45-60 градусов может считаться читом. Т.е. если с места взлетит тачка вверх, это чит, так как угол горизонта при перемещение будет 90 градусов
спидхак - мона для каждой тачи подсчитать макс скорось, записать это все в массив и проверять с учетом установленного NOS - только, если угол перемещения более менее ближе к нулю. К примеру при падении просто вниз, угол перемещения равен -90 градусов.
Re: Создание Античита -
Riaz - 04.12.2009
Появилась замечательная функция GetPlayerVelocity. Насколько я понял и проверил, она определяет на сколько перемещается игрок по координатам x,y,z.
Re: Создание Античита -
MX_Master - 04.12.2009
дада, без нее раньше было трудновато ваще определить реальную скорость, т.к. был нужен таймер и 2 точки перемещения для расчетов.
кста, есь еще такая вещь как законный телепорт, его часто античит может принять за спидхак
Re: Создание Античита -
Riaz - 05.12.2009
С этим всё сложно, в MTA например Esc без остановки игры, в SA-MP он останавливает игру. Нужны "официальные" Callback'и, например OnPlayerStunt(playerid, moneyget, Float:degrees) (и ещё все переменные прыжка, время, расстояние и т.д), OnPlayerTeleportByMap(playerid, Float

ldx, Float

ldy, Float

ldz, Float:newx, Float:newy, Float:newz) и функции GetPlayerGameSpeed(playerid)/SetPlayerGameSpeed(playerid, Float

peed).
Re: Создание Античита -
Baks - 16.12.2009
Quote:
|
Originally Posted by MX_Master
может кто может и лучше, и меньше написать, не знаю, мой античит на деНги такой. НЕПРОВЕРЕНО ! (:
Код:
//
// вставить в начало мода
//
stock playerMoney[MAX_PLAYERS];
stock ac_GivePlayerMoney ( playerid, money )
{
playerMoney[playerid] += money;
ResetPlayerMoney(playerid);
GivePlayerMoney( playerid, playerMoney[playerid] );
}
stock ac_ResetPlayerMoney ( playerid )
{
playerMoney[playerid] = 0;
ResetPlayerMoney(playerid);
}
stock ac_GetPlayerMoney ( playerid )
{
return playerMoney[playerid];
}
forward updatePlayersMoney();
public updatePlayersMoney()
{
for ( new i = 0; i < MAX_PLAYERS; i++ )
if ( IsPlayerConnected(i) )
{
ResetPlayerMoney(i);
GivePlayerMoney( i, playerMoney[i] );
}
}
#define GivePlayerMoney ac_GivePlayerMoney
#define ResetPlayerMoney ac_ResetPlayerMoney
#define GetPlayerMoney ac_GetPlayerMoney
public OnGameModeInit ()
{
// каждые 10 сек каждому онлайн игроку будет выставлено его
// реальное кол-во денег, которое хранится на сервере
SetTimer( "updatePlayersMoney", 10000, 1 );
return 1;
}
|
При тесте обнуляет все деньги, даже честно заработанные, может кто знает в чем ошибка?
Re: Создание Античита - Zeex - 16.12.2009
На вид вроде все верно...
pawn Код:
#define GivePlayerMoney ac_GivePlayerMoney
#define ResetPlayerMoney ac_ResetPlayerMoney
#define GetPlayerMoney ac_GetPlayerMoney
Эти дефайны у тебя до или после UpdatePlayersMoney стоят?
Re: Создание Античита -
Baks - 16.12.2009
После как показано в самом примере.
Re: Создание Античита -
MX_Master - 16.12.2009
код в студию, иначе на кофейной гуще долго можно гадать
это локальная мини версия античита на бапки, так что, если какой-то фс тоже рулит баблом на серве, все его действия мод будет считать недействительными. да и ваще, как я грил, это вариант серверных денежек вместо клиентских
Re: Создание Античита -
Baks - 16.12.2009
MX_Master, специально только что для проверки прописал код в самый стандартный лвдм, там он также отнимает даже те деньги, которые прописаны на спавн, не говоря уже о стант бонусе и пиратском корабле.
Re: Создание Античита -
MX_Master - 17.12.2009
Обратите внимание на строки 79-120 и 931-933 в
коде LVDM, который я только что изменил и проверил. Если игроку выставить деньги с помощью любой админки, мод вернет все назад не позднее 10 сек спустя. А это значит, что все прекрасно работает для именно моего варианта серверных денех.
Quote:
|
Originally Posted by предыдущий текст сообщения
а я вроде и написал в конце кода НЕПРОВЕРНО, хотя это слово почему-то все упустили (: я могу тока идею и примерный вариант подсказать, а если уж не получается у конечного скриптера подтесать скрипт, это печально
стант бонус это ваще неконтролируемая клиентская добавка к бабкам, которую сервер не отслеживает ни коим образом
|
Re: Создание Античита -
Baks - 17.12.2009
Да, работает на 5+, но есть последний баг - не реально потратить деньги, точнее тратишь, но через 10 сек, снова появляется столько, сколько было до покупки. Это реально исправить?
Re: Создание Античита - Zeex - 17.12.2009
Тогда нужно добавить кое-какое условие:
pawn Код:
if (GetPlayerMoney(i) > playerMoney[i])
{
ResetPlayerMoney(i);
GivePlayerMoney( i, playerMoney[i] );
}
И кстати для таких вот циклов:
pawn Код:
for (new i; i < MAX_PLAYERS; i++)
очень советую использовать
эту библиотеку:
pawn Код:
foreach (Player, i)
{
if (GetPlayerMoney(i) > playerMoney[i])
{
ResetPlayerMoney(i);
GivePlayerMoney( i, playerMoney[i] );
}
}
Не только удобнее, но и эффективнее в разы.
Re: Создание Античита -
Baks - 17.12.2009
К сожалению, не помогло, деньги все также продолжают возвращаться. А также когда снимаешь их со счета в банке они через 10 сек. испаряются.
Re: Создание Античита - Zeex - 17.12.2009
Хмм, нужно еще добавить ветку else и понижать в ней деньги, если их меньше чем в массиве =/
Примерно так:
pawn Код:
public UpdatePlayersMoney()
{
new
money;
foreach (Player, i)
{
money = GetPlayerMoney(i);
if (money > playerMoney[i])
{
ResetPlayerMoney(i);
GivePlayerMoney(i, playerMoney[i]);
}
else if (money < playerMoney[i])
{
ac_ResetPlayerMoney(i);
ac_GivePlayerMoney(i, money);
}
}
return 1;
}
Re: Создание Античита -
Baks - 17.12.2009
Что то я с этой библиотекой не разберусь, все время пишет что не найдено forach, хотя он уже есть и используется.
А без него также остается эта проблема с возвращением денег....
P.S.
MX_Master, посоветуешь что-нибудь?