Крэшат сервер путем создания несуществующих объектов
#1

Здрасьте всем!
Такая вот проблемка нарисовалась: всё чаще стали заходить на сервер ламеры и крэшить игроков путем создания несуществующих объектов через какую-то программу.
Вопрос такой: как установить проверку на то, существует-ли объект?
Пробовал сделать так:
pawn Код:
public OnPlayerUpdate(playerid)
{
if(IsValidObject(objectid)) DestroyObject(objectid);
return 1;
}
Но тут же и ошибка: паблик не знает, что такое objectid
Да и вообще, будет-ли это работать?
Reply
#2

с чего вы взяли что крашит игроков из-за того, что "ламеры" создают не существующие объекты?
Reply
#3

Сервер на 0.3с?
Reply
#4

Начнем с того что вообще принцип создания несуществующего объекта одним игроком у другого игрока невозможен.
Резонный вопрос почему, отвечаю: у sa-mp нет функций по созданию клиентских объектов, если игрок создаст у себя объект серверу будет глубоко на это посрать, нет такой команды создай на сервере объект который есть у меня, а если учесть, что синхронизацией игроков занимается сервер, то создание объекта у одного игрока никак не передаст этот объект другим игрокам. Так что в вашей проблеме есть один изъян, проблема не в объектах.
Reply
#5

Один из них сам сказал, что у них 2 способа: создание несуществующих компонентов на транспорт и создание несуществующих объектов. Пишет, что сам создал программу. Антикрэш путем создания несуществующих компонентов я установил, однако он продолжает создавать несуществующие объекты. Мотивов у него нет, использует прокси, поэтому решить проблему баном невозможно.
Reply
#6

Решите проблему мордобоем)))

Кстати про компоненты более реально, тут есть обратная связь. А вот про объекты чушь, тут направление только сервер -> клиент.
Reply
#7

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Начнем с того что вообще принцип создания несуществующего объекта одним игроком у другого игрока невозможен.
Резонный вопрос почему, отвечаю: у sa-mp нет функций по созданию клиентских объектов, если игрок создаст у себя объект серверу будет глубоко на это посрать, нет такой команды создай на сервере объект который есть у меня, а если учесть, что синхронизацией игроков занимается сервер, то создание объекта у одного игрока никак не передаст этот объект другим игрокам. Так что в вашей проблеме есть один изъян, проблема не в объектах.
Логично. Спасибо за ответ.
Reply
#8

Quote:

Один из них сам сказал, что у них 2 способа: создание несуществующих компонентов на транспорт и создание несуществующих объектов. Пишет, что сам создал программу. Антикрэш путем создания несуществующих компонентов я установил, однако он продолжает создавать несуществующие объекты. Мотивов у него нет, использует прокси, поэтому решить проблему баном невозможно.

Серверу глобоко какать на все это. Он оперирует только id объектов, которые являются тупыми числами.

Я думаю он
1. либо скачал какую-то программку и сказал "ямегасуперкулхацкер написал программу"
2. Либо он нашел изъян только в вашем сервере.

Quote:

использует прокси

Сейчас найти достаточно быстрый SOCKS прокси практически нереально, его по хорошему можно только самому развернуть. Не думаю, что у всех ума хватит на такое. Поэтому баньте его, пока у него тупо не закончатся проксики... Либо найдите общий язык, и под каким-либо предлогом спросите как он это делает.
Reply
#9

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
А вот про объекты чушь, тут направление только сервер -> клиент.
В САМПе есть некоторые ID объектов, которые без опкодов сразу вырубают сервак (мгновенно). Хоть общий объект, хоть для игрока. Воможно используется такой подход.

IsValidObject проверяет на существование объекта на сервере, поэтому если его поставил читер, то он уже присутствует на сервере, разве нет? Поправьте меня, если не так.

Но всё же я думаю, что можно попробовать сделать так:
В OnGameModeInit:
pawn Код:
SetTimer("CheckObjects", 50, 1);
И в низ мода:
pawn Код:
forward CheckObjects();
public CheckObjects()
{
for(new i; i < MAX_OBJECTS; i++)
{
if(!IsValidObject(i)) DestroyObject(i);
}
}
Т.к. если в OnPlayerUpdate ставить, будет грубо говоря MAX_PLAYERS потоков проверки.
Reply
#10

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
IsValidObject проверяет на существование объекта на сервере, поэтому если его поставил читер, то он уже присутствует на сервере, разве нет? Поправьте меня, если не так.
прочитай мой пост, нельзя создать объект на сервере со стороны клиента.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)