PDA

Просмотр полной версии : [Info] SA:MP 0.3z R2



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)
Копирование данной статьи на других ресурсах без разрешения авторов запрещено!

^_^
13.02.2014, 17:20
Наконец-то...
Надеюсь, кроме спрятанных функции для защиты сервера, последний пункт включает в себя и что-то полезное...

DeimoS
13.02.2014, 17:26
Наконец-то...
Надеюсь, кроме спрятанных функции для защиты сервера, последний пункт включает в себя и что-то полезное...

Или же ещё десяток дыр, с помощью которых будут класть сервера :D
Но возможность отследить выстрелы радует. Развязывает руки. Может даже вернусь в скриптинг и доделаю TDM мод, который начал писать где-то год назад :D

Salvacore
13.02.2014, 18:22
Жду R2.

Osetin
14.02.2014, 10:22
Наконец-то вышла...уже заметил что уже начали сервера переходить на 0.3z,Advance уже перешли!

Daniel_Cortez
18.04.2014, 20:18
Описание обновлено до 0.3z R2-2.

DeimoS
19.04.2014, 07:17
Обновления хоть и не большие, но приятные. Уверен, что эти функции не были сделаны за день и это всё наработки для 0.4a, которые пришлось выпустить из-за крашеров (хотя, скорее, надеюсь, а не уверен). Если они и дальше поведут разработку в этом направлении, 0.4а обещает отрыть нам большие возможности по индивидуальной настройке и контролю за игроком