Daniel_Cortez
13.02.2014, 17:02
http://forum.sa-mp.com/images/samp/logo_forum.gif
Итак, спустя год после предыдущей версии, вышла новая версия SA:MP, 0.3z.
Что нового:
R1:
Опциональный режим компенсации пинга увеличивает точность стрельбы.
Новые колбэки Pawn для большего контроля над оружием игроков и транспортом.
Функции статистики сетевого протокола упрощают администрирование серверов.
Множество мелких обновлений безопасности для клиента и сервера.
Подробно:
SA:MP 0.3z RC5-2 Исправлено: Игрок с самым большим ID не отсылал информацию об обновлении незанятого транспорта.
SA:MP 0.3z RC5 В браузере серверов исправлена ошибка выхода за пределы диапазона при добавлении сервера с неправильным портом.
Добавлены некоторые внутренние оптимизации в клиенте, которые должны увеличить производительность.
Исправлена проблема с недоступностью PVar'ов в OnPlayerDisconnect во время рестарта сервера.
Добавлена функция GetServerTickRate(), возвращающая количество серверных тиков в секунду (наподобие FPS).
Исправлена проблема с видимостью 3D-текстов и никаов игроков сквозь серверные объекты.
Изменения в поведении и параметрах колбэка OnUnoccupiedVehicleUpdate:
В предыдущих версиях клиенты могли посылать данные об обновлении транспорта, который не был занят другими игроками, при этом у сервера не было возможности отменить эти обновления.
Теперь скрипт будет оповещаться о подобных обновлениях до того, как транспорт будет обновлён на сервере. GetVehiclePos будет возвращать текущие координаты вместо новых.
В новых параметрах будут передаваться координаты транспорта, сообщённые игроком. Теперь скрипт может вернуть 0, чтобы отменить обновление транспорта, и 1, чтобы позволить обновление.
Все скрипты, использующие колбэк OnUnoccupiedVehicleUpdate должны быть обновлены и перекомпилированы для работы в 0.3z.
forward OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z);
В server.cfg добавлена опция 'lagcompmode'.
Опция 'shotcompmode' была заменена на 'lagcompmode', чтобы использоваться для настройки компенсации пинга в будущих версиях SA:MP.
lagcompmode 0 ; выкл. компенсацию пинга
lagcompmode 1 ; (по умолчанию) вкл. компенсацию пинга
lagcompmode 2 ; вкл. компенсацию пинга только для обновления позиций.
Теперь браузер серверов будет показывать режим 'lagcomp' в свойствах сервера.
Если компенсация пинга выключена, будет действовать старый режим стрельбы по пингу (без вызовов OnPlayerWeaponShot и т.п.).
SA:MP 0.3z RC4
Исправлена проблема с промахами при выстрелах на большом расстоянии.
Проверки тега LoS теперь применяются и к серверным объектам.
OnPlayerGiveDamage теперь вызывается и у NPC-ботов.
Добавлена функция GetPlayerLastShotVectors для получения расширенной информации о выстрелах.
native GetPlayerLastShotVectors(playerid, &Float:fOriginX, &Float:fOriginY, &Float:fOriginZ, &Float:fHitPosX, &Float:fHitPosY, &Float:fHitPosZ);
Добавлена настройка режима стрельбы (shotcompmode 2 в server.cfg), позволяющая использовать камеру для наведения и авто-прицеливание с помощью геймпада.
Исправлено: По игрокам нельзя было попасть из оружия, когда они ехали на крыше машины.
Добавлена расширенная информация о камере игрока, такая как соотношение сторон экрана и уровень увеличения (для снайперской винтовки).
native Float:GetPlayerCameraAspectRatio(playerid);
native Float:GetPlayerCameraZoom(playerid);
Добавлены функции для получения расширенной информации о сетевом протоколе. Теперь в Pawn можно будет получить эту информацию без парсинга строки из GetPlayerNetworkStats
native NetStats_GetConnectedTime(playerid);
native NetStats_MessagesReceived(playerid);
native NetStats_BytesReceived(playerid);
native NetStats_MessagesSent(playerid);
native NetStats_BytesSent(playerid);
native NetStats_MessagesRecvPerSecond(playerid);
native Float:NetStats_PacketLossPercent(playerid);
native NetStats_ConnectionStatus(playerid);
native NetStats_GetIpPort(playerid, ip_port[], ip_port_len);
SA-MP 0.3z RC3
Исправлено: Включение автоприцеливания при нажатии Q и E.
Исправлено: Снаряды от снайперской винтовки не работали за пределами карты.
Доп. данные на стороне сервера для обнаружения модифицированных данных о выстреле.
Добавлена функция VectorSize (http://pro-pawn.ru/showthread.php?6407-VectorSize).
SA-MP 0.3z RC2
Удалена возможность автоприцеливания с помощью Joypad
Добавлена константа BULLET_HIT_PLAYER_OBJECT (4)
Исправлена проблема с эффектами дыма и отлетающих гильз от оружия.
SA-MP 0.3z RC1
Обновлена синхронизация пуль для огнестрельного оружия
Выстрелы игроков теперь рассчитываются с учётом пинга, поэтому вы можете стрелять прямо по скину вместо прицеливания по пингу.
Сервер может получить полную информацию о пулях. Теперь можно узнать, попала ли пуля по игроку, машине или объекту.
#define BULLET_HIT_TYPE_NONE 0
#define BULLET_HIT_TYPE_PLAYER 1
#define BULLET_HIT_TYPE_VEHICLE 2
#define BULLET_HIT_TYPE_OBJECT 3
#define BULLET_HIT_PLAYER_OBJECT 4
Добавлена новая функция OnPlayerWeaponShot (http://wiki.sa-mp.com/wiki/OnPlayerWeaponShot), вызываемая сервером при каждом выстреле:
forward OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
Автовызываемые функции OnPlayerGiveDamage и OnPlayerTakeDamage теперь получают ID части тела, по которой произведено попадание.
Если в вашем скрипте используются эти функции, вам понадобится обновить их.
В файл server.cfg добавлен параметр 'messageholelimit' для предотвращения DoS-атак.
Это переменная для протокола RakNet (уязвимости в котором были использованы для недавних атак).
Когда клиент/игрок отсылает на сервер поддельные пакеты, сервер думает, что во время доставки было потеряно много пакетов/сообщений.
Протокол попытается восстановить потерянные пакеты: зарезервирует под них место в памяти и будет ждать, пока клиент не пришлёт эти пакеты заново.
На весь этот процесс уходит много ресурсов и при большом количестве потерь может привести к лагам и крашу сервера.
На сервере нет чётких ограничений в количестве потерянных сообщений от игрока. Каждый потерянный блок пакетов можно было считать уязвимостью. Были попытки исправить это в 0.3x R2, был поставлен лимит в 1000 и иногда, если у игроков были проблемы с интернетом и терялось много пакетов, сервер по ошибке принимал это за попытку DoS-атаки.
Теперь можно вручную указать максимальное кол-во потерянных пакетов. Чаще всего значения по умолчанию уже достаточно и владельцам серверов не стоит беспокоиться об этом.
Мод rivershell обновлён до 2-й версии.
R1-2:
Исправлено обновление оружия у игроков, находящихся в транспорте.
R2-1:
Исправлена уязвимость в сетевом протоколе, позволявшая с помощью специальных утилит вызывать зависание сервера и потерю соединения с игроками.
В server.cfg добавлены переменные "messageslimit", "ackslimit" и "playertimeout". Каждая из них представляет собой ограничение, после превышения которых сервер разрывает соединение с игроком.
messageslimit (по умолч.: 500) - макс. количество сообщений в секунду, посылаемых от сервера к игроку.
ackslimit (по умолч.: 1000) - макс. количество сообщений в секунду, посылаемых от игрока к серверу.
playertimeout (по умолч.: 10000) - макс. время тайм-аута (в миллисекундах), во время которого клиент может не посылать серверу ни одного пакета.
При разрыве соединения в результате превышения лимитов messageslimit и ackslimit выводятся следующие сообщения:
Warning: client exceeded 'messageslimit' (1) <IP>:<порт> (<кол-во>) Limit: 500/sec
Warning: client exceeded 'ackslimit' <IP>:<порт> (<кол-во>) Limit: 1000/sec
При частых ложных срабатываниях рекомендуется увеличить в server.cfg значения указанных в сообщениях лимитов.
R2-2:
Значение ackslimit в server.cfg по умолчанию увеличено с 1000 до 3000.
Добавлен колбэк OnIncomingConnection, в которую передаются IP-адрес и порт подключившегося игрока.
forward OnIncomingConnection(playerid, ip_address[], port);
Добавлены новые функции:
// блокирует подключения с указанного IP-адреса, допускается указание подсети
native BlockIpAddress(ip_address[], timems);
// удаляет IP из списка блокировки
native UnBlockIpAddress(ip_address[]);
// отсылает указанному игроку сообщение об убийстве
// (полезно, если нужно, чтобы не все игроки видели убийства в киллчате)
native SendDeathMessageToPlayer(playerid, killer, killee, weapon);
// создаёт взрыв, который виден только указанному игроку
native CreateExplosionForPlayer(playerid, Float:X, Float:Y, Float:Z, type, Float:Radius);
В логи сервера больше не выводятся строки "Packet Modified".
Также в логи больше не выводятся строки "[death]", "[kill]" и "[nick]", если значение параметра "chatlogging" в server.cfg равно 0.
Скачать:
Клиент: http://files.sa-mp.com/sa-mp-0.3z-R1-install.exe
Сервер:
SA-MP 0.3z R2-2 Windows Server (http://files.sa-mp.com/samp03z_svr_R2-2_win32.zip)
SA-MP 0.3z R2-2 Linux Server (http://files.sa-mp.com/samp03zsvr_R2-2.tar.gz)
SA-MP 0.3z R2-2 Linux Server (1000 players) (http://files.sa-mp.com/samp03zsvr_R2-2-1000p.tar.gz)
Источник: http://forum.sa-mp.com/showthread.php?t=494414
Перевод: Daniel_Cortez (http://pro-pawn.ru/member.php?u=100)
Специально для Pro-Pawn.ru (http://www.pro-pawn.ru)
Копирование данной статьи на других ресурсах без разрешения авторов запрещено!
Итак, спустя год после предыдущей версии, вышла новая версия SA:MP, 0.3z.
Что нового:
R1:
Опциональный режим компенсации пинга увеличивает точность стрельбы.
Новые колбэки Pawn для большего контроля над оружием игроков и транспортом.
Функции статистики сетевого протокола упрощают администрирование серверов.
Множество мелких обновлений безопасности для клиента и сервера.
Подробно:
SA:MP 0.3z RC5-2 Исправлено: Игрок с самым большим ID не отсылал информацию об обновлении незанятого транспорта.
SA:MP 0.3z RC5 В браузере серверов исправлена ошибка выхода за пределы диапазона при добавлении сервера с неправильным портом.
Добавлены некоторые внутренние оптимизации в клиенте, которые должны увеличить производительность.
Исправлена проблема с недоступностью PVar'ов в OnPlayerDisconnect во время рестарта сервера.
Добавлена функция GetServerTickRate(), возвращающая количество серверных тиков в секунду (наподобие FPS).
Исправлена проблема с видимостью 3D-текстов и никаов игроков сквозь серверные объекты.
Изменения в поведении и параметрах колбэка OnUnoccupiedVehicleUpdate:
В предыдущих версиях клиенты могли посылать данные об обновлении транспорта, который не был занят другими игроками, при этом у сервера не было возможности отменить эти обновления.
Теперь скрипт будет оповещаться о подобных обновлениях до того, как транспорт будет обновлён на сервере. GetVehiclePos будет возвращать текущие координаты вместо новых.
В новых параметрах будут передаваться координаты транспорта, сообщённые игроком. Теперь скрипт может вернуть 0, чтобы отменить обновление транспорта, и 1, чтобы позволить обновление.
Все скрипты, использующие колбэк OnUnoccupiedVehicleUpdate должны быть обновлены и перекомпилированы для работы в 0.3z.
forward OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z);
В server.cfg добавлена опция 'lagcompmode'.
Опция 'shotcompmode' была заменена на 'lagcompmode', чтобы использоваться для настройки компенсации пинга в будущих версиях SA:MP.
lagcompmode 0 ; выкл. компенсацию пинга
lagcompmode 1 ; (по умолчанию) вкл. компенсацию пинга
lagcompmode 2 ; вкл. компенсацию пинга только для обновления позиций.
Теперь браузер серверов будет показывать режим 'lagcomp' в свойствах сервера.
Если компенсация пинга выключена, будет действовать старый режим стрельбы по пингу (без вызовов OnPlayerWeaponShot и т.п.).
SA:MP 0.3z RC4
Исправлена проблема с промахами при выстрелах на большом расстоянии.
Проверки тега LoS теперь применяются и к серверным объектам.
OnPlayerGiveDamage теперь вызывается и у NPC-ботов.
Добавлена функция GetPlayerLastShotVectors для получения расширенной информации о выстрелах.
native GetPlayerLastShotVectors(playerid, &Float:fOriginX, &Float:fOriginY, &Float:fOriginZ, &Float:fHitPosX, &Float:fHitPosY, &Float:fHitPosZ);
Добавлена настройка режима стрельбы (shotcompmode 2 в server.cfg), позволяющая использовать камеру для наведения и авто-прицеливание с помощью геймпада.
Исправлено: По игрокам нельзя было попасть из оружия, когда они ехали на крыше машины.
Добавлена расширенная информация о камере игрока, такая как соотношение сторон экрана и уровень увеличения (для снайперской винтовки).
native Float:GetPlayerCameraAspectRatio(playerid);
native Float:GetPlayerCameraZoom(playerid);
Добавлены функции для получения расширенной информации о сетевом протоколе. Теперь в Pawn можно будет получить эту информацию без парсинга строки из GetPlayerNetworkStats
native NetStats_GetConnectedTime(playerid);
native NetStats_MessagesReceived(playerid);
native NetStats_BytesReceived(playerid);
native NetStats_MessagesSent(playerid);
native NetStats_BytesSent(playerid);
native NetStats_MessagesRecvPerSecond(playerid);
native Float:NetStats_PacketLossPercent(playerid);
native NetStats_ConnectionStatus(playerid);
native NetStats_GetIpPort(playerid, ip_port[], ip_port_len);
SA-MP 0.3z RC3
Исправлено: Включение автоприцеливания при нажатии Q и E.
Исправлено: Снаряды от снайперской винтовки не работали за пределами карты.
Доп. данные на стороне сервера для обнаружения модифицированных данных о выстреле.
Добавлена функция VectorSize (http://pro-pawn.ru/showthread.php?6407-VectorSize).
SA-MP 0.3z RC2
Удалена возможность автоприцеливания с помощью Joypad
Добавлена константа BULLET_HIT_PLAYER_OBJECT (4)
Исправлена проблема с эффектами дыма и отлетающих гильз от оружия.
SA-MP 0.3z RC1
Обновлена синхронизация пуль для огнестрельного оружия
Выстрелы игроков теперь рассчитываются с учётом пинга, поэтому вы можете стрелять прямо по скину вместо прицеливания по пингу.
Сервер может получить полную информацию о пулях. Теперь можно узнать, попала ли пуля по игроку, машине или объекту.
#define BULLET_HIT_TYPE_NONE 0
#define BULLET_HIT_TYPE_PLAYER 1
#define BULLET_HIT_TYPE_VEHICLE 2
#define BULLET_HIT_TYPE_OBJECT 3
#define BULLET_HIT_PLAYER_OBJECT 4
Добавлена новая функция OnPlayerWeaponShot (http://wiki.sa-mp.com/wiki/OnPlayerWeaponShot), вызываемая сервером при каждом выстреле:
forward OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
Автовызываемые функции OnPlayerGiveDamage и OnPlayerTakeDamage теперь получают ID части тела, по которой произведено попадание.
Если в вашем скрипте используются эти функции, вам понадобится обновить их.
В файл server.cfg добавлен параметр 'messageholelimit' для предотвращения DoS-атак.
Это переменная для протокола RakNet (уязвимости в котором были использованы для недавних атак).
Когда клиент/игрок отсылает на сервер поддельные пакеты, сервер думает, что во время доставки было потеряно много пакетов/сообщений.
Протокол попытается восстановить потерянные пакеты: зарезервирует под них место в памяти и будет ждать, пока клиент не пришлёт эти пакеты заново.
На весь этот процесс уходит много ресурсов и при большом количестве потерь может привести к лагам и крашу сервера.
На сервере нет чётких ограничений в количестве потерянных сообщений от игрока. Каждый потерянный блок пакетов можно было считать уязвимостью. Были попытки исправить это в 0.3x R2, был поставлен лимит в 1000 и иногда, если у игроков были проблемы с интернетом и терялось много пакетов, сервер по ошибке принимал это за попытку DoS-атаки.
Теперь можно вручную указать максимальное кол-во потерянных пакетов. Чаще всего значения по умолчанию уже достаточно и владельцам серверов не стоит беспокоиться об этом.
Мод rivershell обновлён до 2-й версии.
R1-2:
Исправлено обновление оружия у игроков, находящихся в транспорте.
R2-1:
Исправлена уязвимость в сетевом протоколе, позволявшая с помощью специальных утилит вызывать зависание сервера и потерю соединения с игроками.
В server.cfg добавлены переменные "messageslimit", "ackslimit" и "playertimeout". Каждая из них представляет собой ограничение, после превышения которых сервер разрывает соединение с игроком.
messageslimit (по умолч.: 500) - макс. количество сообщений в секунду, посылаемых от сервера к игроку.
ackslimit (по умолч.: 1000) - макс. количество сообщений в секунду, посылаемых от игрока к серверу.
playertimeout (по умолч.: 10000) - макс. время тайм-аута (в миллисекундах), во время которого клиент может не посылать серверу ни одного пакета.
При разрыве соединения в результате превышения лимитов messageslimit и ackslimit выводятся следующие сообщения:
Warning: client exceeded 'messageslimit' (1) <IP>:<порт> (<кол-во>) Limit: 500/sec
Warning: client exceeded 'ackslimit' <IP>:<порт> (<кол-во>) Limit: 1000/sec
При частых ложных срабатываниях рекомендуется увеличить в server.cfg значения указанных в сообщениях лимитов.
R2-2:
Значение ackslimit в server.cfg по умолчанию увеличено с 1000 до 3000.
Добавлен колбэк OnIncomingConnection, в которую передаются IP-адрес и порт подключившегося игрока.
forward OnIncomingConnection(playerid, ip_address[], port);
Добавлены новые функции:
// блокирует подключения с указанного IP-адреса, допускается указание подсети
native BlockIpAddress(ip_address[], timems);
// удаляет IP из списка блокировки
native UnBlockIpAddress(ip_address[]);
// отсылает указанному игроку сообщение об убийстве
// (полезно, если нужно, чтобы не все игроки видели убийства в киллчате)
native SendDeathMessageToPlayer(playerid, killer, killee, weapon);
// создаёт взрыв, который виден только указанному игроку
native CreateExplosionForPlayer(playerid, Float:X, Float:Y, Float:Z, type, Float:Radius);
В логи сервера больше не выводятся строки "Packet Modified".
Также в логи больше не выводятся строки "[death]", "[kill]" и "[nick]", если значение параметра "chatlogging" в server.cfg равно 0.
Скачать:
Клиент: http://files.sa-mp.com/sa-mp-0.3z-R1-install.exe
Сервер:
SA-MP 0.3z R2-2 Windows Server (http://files.sa-mp.com/samp03z_svr_R2-2_win32.zip)
SA-MP 0.3z R2-2 Linux Server (http://files.sa-mp.com/samp03zsvr_R2-2.tar.gz)
SA-MP 0.3z R2-2 Linux Server (1000 players) (http://files.sa-mp.com/samp03zsvr_R2-2-1000p.tar.gz)
Источник: http://forum.sa-mp.com/showthread.php?t=494414
Перевод: Daniel_Cortez (http://pro-pawn.ru/member.php?u=100)
Специально для Pro-Pawn.ru (http://www.pro-pawn.ru)
Копирование данной статьи на других ресурсах без разрешения авторов запрещено!