ziggi
12.07.2016, 01:08
fixes.inc
GitHub (https://github.com/Open-GTO/sa-mp-fixes)
Описание
Исправления ошибок SA-MP, написанные сообществом.
Введение
SA-MP - это тестируемое программное обеспечение написанное небольшой командой в своё свободное время, возможно здесь есть ошибки (как и в любом программном обеспечении). Некоторые из них были известны в течении длительного времени, но имеют низкий приоритет из-за их незначительных эффектов, другие просто не исправляются в течение длительного времени. Для многих из этих ошибок есть решения, которые могут быть реализованы с помощью Pawn (и это может быть проще, чем их реализация в исходном коде SA-MP). Целью этого скрипта является объединение как можно большего числа исправлений в одну библиотеку, удобную в использовании всем.
Использование
Для того, чтобы использовать этот скрипт, просто включите его после подключения стандартных SA-MP функций, но перед другими библиотеками:
#include <a_samp>
// Любые переопределения стандартных констант должны быть здесь
//#undef MAX_PLAYERS
//#define MAX_PLAYERS 10
#include <fixes>
#include <other>
Для отключения любого исправления по какой-либо причине делайте следующее:
#define FIX_<name> 0
Например, чтобы отключить все file.inc исправления, если вы всегда правильно проверяете дескриптор файла, сделайте следующее:
#include <a_samp>
#define FIX_file_inc 0
#include <fixes>
#include <other>
Все имена исправлений имеют отдельные слова, и все они, с их описанием, перечислены ниже.
Если на вашем сервере работает только один скрипт (то есть нет фильтр скриптов), вы можете использовать следующую настройку для улучшения кода fixes.inc:
#include <a_samp>
#define FIXES_Single 1
#include <fixes>
#include <other>
Исправления
Название
Ошибка
Автор
Сообщение
Официально исправлено?
GetPlayerColor
Возвращает "0" если "SetPlayerColor" не был вызван.
KoczkaHUN
FILTERSCRIPT
Несмотря на то, что этот макрос есть в каждом новом скрипте (new.pwn), многие люде не определяют "FILTERSCRIPT" в соответствующих случаях.
Y_Less (https://github.com/Y-Less/)
SpawnPlayer
Убивает игрока, если он в транспорте.
Y_Less (https://github.com/Y-Less/)
SetPlayerName
Использование "SetPlayerName" с новым именем, отличающимся от старого только регистром символов, не меняет ник вовсе.
Y_Less (https://github.com/Y-Less/)/simonepri (https://github.com/simonepri/)
GetPlayerSkin
Возвращает новый скин после вызова "SetSpawnInfo", но до фактического изменения скина у игрока.
Y_Less (https://github.com/Y-Less/)
GetWeaponName
Ничего не возвращает для 18, 44 и 45.
Y_Less (https://github.com/Y-Less/)
0.3.7
SetPlayerWorldBounds
Прицеливание может обойти границу.
Y_Less (https://github.com/Y-Less/)
TogglePlayerControllable
Другие игроки видят как вы бежите на месте.
Slice (https://github.com/oscar-broman/)
Link (http://forum.sa-mp.com/showpost.pawn?p=876854)
HydraSniper
Вход в военный самолёт со снайперской винтовкой ломает картинку (как с камерой).
funky1234
Link (http://forum.sa-mp.com/showpost.pawn?p=965644)
IsPlayerInCheckpoint
Функция возвращает неопределённое значение если до её вызова не была вызвана ни одна из функций чекпоинтов.
Y_Less (https://github.com/Y-Less/)
IsPlayerInRaceCheckpoint
Функция возвращает неопределённое значение если до её вызова не была вызвана ни одна из функций чекпоинтов.
Y_Less (https://github.com/Y-Less/)
GetPlayerWeapon
Возвращает старое значение после использования "SetPlayerArmedWeapon" для игрока в транспорте.
Y_Less (https://github.com/Y-Less/)
PutPlayerInVehicle
Если функция используется на пассажире и водителе (переброс игроков из одного автомобиля в другой), водитель не видит пассажира в новом транспорте.
leong124/Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1265965)
KEY_AIM
"KEY_AIM" не определена по умолчанию.
Y_Less (https://github.com/Y-Less/)
SetPlayerCheckpoint
При создании нового чекпоинта в случае, когда уже создан другой чекпоинт, в параметр "Float:size" нового чекпоинта передавалось значение старого чекпоинта.
ziggi (https://github.com/ziggi/)
SetPlayerRaceCheckpoint
При создании нового чекпоинта в случае, когда уже создан другой чекпоинт, в параметр "Float:size" нового чекпоинта передавалось значение старого чекпоинта.
ziggi (https://github.com/ziggi/)
TextDrawCreate
Падает при пустой строке.
wups
TextDrawSetString
Падает при пустой строке и длине, больше чем 1024.
TomTrox
AllowInteriorWeapons
Ничего не делает.
KoczkaHUN
OnPlayerEnterVehicle
Крашит других игроков когда игрок садится на недействительное место.
RyDeR`/Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1410296)
OnPlayerEnterVehicle_2
Сервер падает когда читер садится в недействительный транспорт.
im/Y_Less (https://github.com/Y-Less/)
AllowTeleport
В версии 0.3dRC9 были удалены "AllowPlayerTeleport" и "AllowAdminTeleport" в пользу "OnPlayerClickMap". Некоторые скрипты используют эти функции.
Y_Less (https://github.com/Y-Less/)
SetPlayerSpecialAction
Удаление джетпаков у игроков изменением их special action на 0 продолжает воспроизводить звук пока они не умрут.
MP2
OnDialogResponse
Читеры могут подменить ID диалога и отправить ответ на не тот диалог, который они видят в настоящее время.
Y_Less (https://github.com/Y-Less/)
0.3e RC6
GetPlayerDialog (Отключено)
Эта функция не существует.
Y_Less (https://github.com/Y-Less/)/simonepri (https://github.com/simonepri/)
PlayerDialogResponse
Диалог игрока не скрывается при перезагрузке сервера, что заставляет сервер сообщать "Warning: PlayerDialogResponse PlayerId: 0 dialog ID doesn't match last sent dialog ID".
simonepri (https://github.com/simonepri/)
SetSpawnInfo
Кикает игрока если "SpawnPlayer" была вызвана до "SetSpawnInfo".
Y_Less (https://github.com/Y-Less/)
SetPlayerSkin
Скидывает с сиденья на байках.
CyNiC
Link (http://forum.sa-mp.com/showpost.pawn?p=1756094)
HideMenuForPlayer
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1787297)
valstr
Падает при больших числах.
Slice (https://github.com/oscar-broman/)
fclose (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fwrite (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fread (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fputchar (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fgetchar (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fblockwrite (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fblockread (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fseek (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
flength (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
file_inc (Отключено)
Включает или выключает все исправления для файлов вместе (может вызвать серьёзные накладные расходы).
Y_Less (https://github.com/Y-Less/)
IsPlayerAttachedObjectSlotUsed
Не работает в OnPlayerDisconnect.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1794167)
SetPlayerAttachedObject
Не удаляются объекты при выключении режима.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1794167)
OnPlayerDeath
Клиент зависает если он умирает с применённой анимацией.
h02
Link (http://forum.sa-mp.com/showpost.pawn?p=1641144)
strins
Игнорирует параметр "maxlength", возможны падения.
Slice (https://github.com/oscar-broman/)
IsPlayerConnected
Использует только два нижних байта переданного ID.
Slice (https://github.com/oscar-broman/)
OnPlayerCommandText
ZCMD может упасть при передаче пустой строки.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1909511)
TrainExit
При выходе из поезда, перемещённого с помощью "PutPlayerInVehicle", камера не сбрасывается должным образом.
Terminator3/Y_Less (https://github.com/Y-Less/)
Kick
Вызов "Kick" в "OnPlayerConnect" не работает должным образом.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1989453)
0.3x
OnVehicleMod
Крэшит других игроков при применении недействительного компонента.
JernejL (https://github.com/JernejL/)/Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1671500)
random (Отключено)
Не работает с отрицательными значениями.
simonepri (https://github.com/simonepri/)
sleep
Утечка байтов из стека.
Y_Less (https://github.com/Y-Less/)
AddMenuItem
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
SetMenuColumnHeader
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
ShowMenuForPlayer
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
HideMenuForPlayer
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1787297)
HideMenuForPlayer_2 (Отключено)
Игнорирует параметр "menuid".
Y_Less (https://github.com/Y-Less/)
DisableMenu
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
DisableMenuRow
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
Menus
Все исправления для функций меню.
Y_Less (https://github.com/Y-Less/)
GetPlayerMenu
Возвращает предыдущее меню когда ничего не отображается.
Y_Less (https://github.com/Y-Less/)
GetPlayerInterior
Всегда возвращает 0 для NPC.
Y_Less (https://github.com/Y-Less/)/simonepri (https://github.com/simonepri/)
ClearAnimations
Использование ClearAnimation в момент, когда игрок находится в транспорте, выбрасывает игрока из него.
simonepri (https://github.com/simonepri/)
ClearAnimations_2
Если ApplyAnimation была вызвана со значением 1 для параметра freeze, ClearAnimations не делает ничего когда анимация заканчивается.
simonepri (https://github.com/simonepri/)
KEY_CROUCH
При нажатии KEY_CROUCH на месте пассажира вы начинаете целиться; если вы повторно нажмёте KEY_CROUCH игрок не возвращается в транспорт.
simonepri (https://github.com/simonepri/)
GangZoneCreate
Ошибка зон банд на главной карте для игроков, расположенных под определёнными углами по отношению к ним.
simonepri (https://github.com/simonepri/)/Y_Less (https://github.com/Y-Less/)
SPECIAL_ACTION_PISSING
Задефайнить это.
simonepri (https://github.com/simonepri/)
IsValidVehicle
"IsValidVehicle" не определена по умолчанию.
simonepri (https://github.com/simonepri/)
ApplyAnimation
Передача недействительной библиотеки анимации в ApplyAnimation вызывает падение клиента для игроков в зоне стрима.
simonepri (https://github.com/simonepri/)
ApplyAnimation_2
Когда ApplyAnimation вызывается первый раз после появления игрока, она не работает.
simonepri (https://github.com/simonepri/)
OnPlayerSpawn
San Andreas забирает $100 у игроков.
Y_Less (https://github.com/Y-Less/)
GetGravity
"GetGravity" не определена по умолчанию.
Whitetiger (https://github.com/Whitetigerswt/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1706447)
gpci
"gpci" не определена по умолчанию.
simonepri (https://github.com/simonepri/)
Link (http://pastebin.com/VQSGpbSm)
Natives
Несколько функций включено по умолчанию, это включает или отключает их все.
Y_Less (https://github.com/Y-Less/)
OnPlayerConnect
Эта функция не вызывается для игроков при включении фильтрскрипта.
Y_Less (https://github.com/Y-Less/)
OnPlayerDisconnect
Эта функция не вызывается для игроков при включении фильтрскрипта.
Y_Less (https://github.com/Y-Less/)
GameText
Некоторые стили не отображаются при указанном времени.
Y_Less (https://github.com/Y-Less/)
GameTextStyles
San Andreas имеет фиксированные стили для зон и имён транспорта, но они не включены в список стилей GameText.
Y_Less (https://github.com/Y-Less/)
HideGameText
Там нет функции "HideGameTextForXYZ".
Y_Less (https://github.com/Y-Less/)
BODYPARTS
Части тела, используемые в OnPlayer(Take/Give)Damage, не определены по умолчанию.
Whitetiger (https://github.com/Whitetigerswt/)
CAMERAMODES
Режимы камеры, используемые в GetPlayerCameraMode, не определены по умолчанию.
Whitetiger (https://github.com/Whitetigerswt/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1309730)
SetPlayerCamera
Функции камеры, вызванные сразу после включения режима слежения, не работают.
Emmet_ (https://github.com/emmet-jones/)
SetPlayerTime
Использование этой функции в "OnPlayerConnect" не работает.
Emmet_ (https://github.com/emmet-jones/)
OnPlayerRequestClass
При выборе класса иногда появляются случайные дубины и бутылки.
Y_Less (https://github.com/Y-Less/)
SetPlayerColor
При использовании в OnPlayerConnect, затрагивающий игрок не увидит цвет в меню TAB.
Emmet_ (https://github.com/emmet-jones/)
Link (http://forum.sa-mp.com/showthread.pawn?t=452407)
FileMaths
Вы можете написать тарабарщину вида "File:a; ++a;".
Y_Less (https://github.com/Y-Less/)
GetPlayerWeaponData
Оружие, в котором закончились патроны, по-прежнему возвращается.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showthread.pawn?t=567400)
strcmp
Возвращает 0 если одна из строк пустая.
Y_Less (https://github.com/Y-Less/)
GetPVarString
Возвращает неправильный код символа для символов с кодом 128 и выше.
ziggi (https://github.com/ziggi/)/Mutha_X/Daniel_Cortez (https://github.com/Daniel-Cortez)
Link (http://forum.sa-mp.com/showthread.pawn?t=572724&page=11)/Link (http://pro-pawn.ru/showthread.pawn?13007)
GetSVarString
Возвращает неправильный код символа для символов с кодом 128 и выше.
ziggi (https://github.com/ziggi/)/Mutha_X/Daniel_Cortez (https://github.com/Daniel-Cortez)
Link (http://forum.sa-mp.com/showthread.pawn?t=572724&page=11)/Link (http://pro-pawn.ru/showthread.pawn?13007)
toupper
Не работает на Linux для символов с кодом 128 и выше.
ziggi (https://github.com/ziggi/)
Link (http://pro-pawn.ru/showthread.pawn?13466&p=72954#post72954)
tolower
Не работает на Linux для символов с кодом 128 и выше.
ziggi (https://github.com/ziggi/)
Link (http://pro-pawn.ru/showthread.pawn?13466&p=72954#post72954)
Настройки
Есть несколько настроек для улучшения работы этого скрипта. Задевайните эти символы как "1", прежде чем подключить fixes.inc (удалите или установите их в 0, чтобы отключить их):
FIXES_Single - У вас есть только один работающий скрипт (нет фильтрскриптов), упрощает код.
FIXES_SilentKick - Когда игрок кикается за запрещённые моды/транспорты, не отправлять им сообщение.
FIXES_Debug - Дополнительная информация в консоли сервера.
Некоторые исправления отключены по умолчанию, но вы можете их включить:
#define FIX_GetPlayerDialog 1 // Добавляет новую функцию, это не цель данного скрипта.
#define FIX_random 1 // Я не думаю, что не работающие отрицательные числа является ошибкой.
#define FIX_file_inc 1 // Это включает все "fwhatever" исправления (исправления для файлов).
#define FIX_HideMenuForPlayer_2 1 // Скрывать определённое меню, а не только текущее.
Дополнение
Файл достаточно хорошо документирован, со списком исправленных ошибок в верхней части. Если вы знаете о других ошибках, или у вас есть какие-либо решения для, было бы хорошо, если бы вы разместили их в этой теме (в соответствии с используемой структурой). Эту библиотеку также необходимо тщательное тестировать, чтобы найти ошибки в исправлениях.
Опять же, это общественный проект, если у кого есть комментарии, улучшения, критика и т.д. пожалуйста, напишите их в этой теме. Это включает в себя дополнения к исходному коду, документацию, переводы или любую другую информацию, из соответствующей области.
Другие исправления
Здесь представлено несколько других библиотек, нацеленых на исправление других серьёзных проблем:
Fixes2 (http://forum.sa-mp.com/showthread.pawn?t=571505) - Y_Less (https://github.com/Y-Less/) исправления "SetTimer", "SetTimerEx" и другие.
SQLitei (http://forum.sa-mp.com/showthread.pawn?t=303682) - Slice (https://github.com/oscar-broman/) исправления и улучшения многих SQLite функций
Timer Fix (http://forum.sa-mp.com/showthread.pawn?t=289675) - Slice (https://github.com/oscar-broman/) исправление, чтобы сделать "SetTimer" и "SetTimerEx" более точными.
Ошибки
Отправлено Y_Less (https://github.com/Y-Less/):
Это тестируемое программное обеспечение написанное небольшой командой в своё свободное время, возможно здесь есть ошибки (как и в любом программном обеспечении). Это программное обеспечение нацелено исправлять ошибки, не вызывать их, но здесь тоже могут быть ошибки.
Наиболее вероятной причиной ошибок является отключение некоторых исправлений. Некоторые исправления являются взаимозависимыми и они ДОЛЖНЫ работать даже тогда, когда связанные с ними исправления отключены, не каждая комбинация была протестирована. Есть буквально миллиарды возможных комбинаций - если вы найдёте ту, которая не компилируется или не работает, пожалуйста, сообщите нам.
По поводу перевода
Нормальных знаний английского у меня нет, переводил наспех, поэтому в тексте возможны ошибки. Об этих ошибках вы можете сообщить в этой теме.
Скачать
Последнюю версию вы всегда можете найти на GitHub (https://github.com/Open-GTO/sa-mp-fixes).
GitHub (https://github.com/Open-GTO/sa-mp-fixes)
Описание
Исправления ошибок SA-MP, написанные сообществом.
Введение
SA-MP - это тестируемое программное обеспечение написанное небольшой командой в своё свободное время, возможно здесь есть ошибки (как и в любом программном обеспечении). Некоторые из них были известны в течении длительного времени, но имеют низкий приоритет из-за их незначительных эффектов, другие просто не исправляются в течение длительного времени. Для многих из этих ошибок есть решения, которые могут быть реализованы с помощью Pawn (и это может быть проще, чем их реализация в исходном коде SA-MP). Целью этого скрипта является объединение как можно большего числа исправлений в одну библиотеку, удобную в использовании всем.
Использование
Для того, чтобы использовать этот скрипт, просто включите его после подключения стандартных SA-MP функций, но перед другими библиотеками:
#include <a_samp>
// Любые переопределения стандартных констант должны быть здесь
//#undef MAX_PLAYERS
//#define MAX_PLAYERS 10
#include <fixes>
#include <other>
Для отключения любого исправления по какой-либо причине делайте следующее:
#define FIX_<name> 0
Например, чтобы отключить все file.inc исправления, если вы всегда правильно проверяете дескриптор файла, сделайте следующее:
#include <a_samp>
#define FIX_file_inc 0
#include <fixes>
#include <other>
Все имена исправлений имеют отдельные слова, и все они, с их описанием, перечислены ниже.
Если на вашем сервере работает только один скрипт (то есть нет фильтр скриптов), вы можете использовать следующую настройку для улучшения кода fixes.inc:
#include <a_samp>
#define FIXES_Single 1
#include <fixes>
#include <other>
Исправления
Название
Ошибка
Автор
Сообщение
Официально исправлено?
GetPlayerColor
Возвращает "0" если "SetPlayerColor" не был вызван.
KoczkaHUN
FILTERSCRIPT
Несмотря на то, что этот макрос есть в каждом новом скрипте (new.pwn), многие люде не определяют "FILTERSCRIPT" в соответствующих случаях.
Y_Less (https://github.com/Y-Less/)
SpawnPlayer
Убивает игрока, если он в транспорте.
Y_Less (https://github.com/Y-Less/)
SetPlayerName
Использование "SetPlayerName" с новым именем, отличающимся от старого только регистром символов, не меняет ник вовсе.
Y_Less (https://github.com/Y-Less/)/simonepri (https://github.com/simonepri/)
GetPlayerSkin
Возвращает новый скин после вызова "SetSpawnInfo", но до фактического изменения скина у игрока.
Y_Less (https://github.com/Y-Less/)
GetWeaponName
Ничего не возвращает для 18, 44 и 45.
Y_Less (https://github.com/Y-Less/)
0.3.7
SetPlayerWorldBounds
Прицеливание может обойти границу.
Y_Less (https://github.com/Y-Less/)
TogglePlayerControllable
Другие игроки видят как вы бежите на месте.
Slice (https://github.com/oscar-broman/)
Link (http://forum.sa-mp.com/showpost.pawn?p=876854)
HydraSniper
Вход в военный самолёт со снайперской винтовкой ломает картинку (как с камерой).
funky1234
Link (http://forum.sa-mp.com/showpost.pawn?p=965644)
IsPlayerInCheckpoint
Функция возвращает неопределённое значение если до её вызова не была вызвана ни одна из функций чекпоинтов.
Y_Less (https://github.com/Y-Less/)
IsPlayerInRaceCheckpoint
Функция возвращает неопределённое значение если до её вызова не была вызвана ни одна из функций чекпоинтов.
Y_Less (https://github.com/Y-Less/)
GetPlayerWeapon
Возвращает старое значение после использования "SetPlayerArmedWeapon" для игрока в транспорте.
Y_Less (https://github.com/Y-Less/)
PutPlayerInVehicle
Если функция используется на пассажире и водителе (переброс игроков из одного автомобиля в другой), водитель не видит пассажира в новом транспорте.
leong124/Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1265965)
KEY_AIM
"KEY_AIM" не определена по умолчанию.
Y_Less (https://github.com/Y-Less/)
SetPlayerCheckpoint
При создании нового чекпоинта в случае, когда уже создан другой чекпоинт, в параметр "Float:size" нового чекпоинта передавалось значение старого чекпоинта.
ziggi (https://github.com/ziggi/)
SetPlayerRaceCheckpoint
При создании нового чекпоинта в случае, когда уже создан другой чекпоинт, в параметр "Float:size" нового чекпоинта передавалось значение старого чекпоинта.
ziggi (https://github.com/ziggi/)
TextDrawCreate
Падает при пустой строке.
wups
TextDrawSetString
Падает при пустой строке и длине, больше чем 1024.
TomTrox
AllowInteriorWeapons
Ничего не делает.
KoczkaHUN
OnPlayerEnterVehicle
Крашит других игроков когда игрок садится на недействительное место.
RyDeR`/Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1410296)
OnPlayerEnterVehicle_2
Сервер падает когда читер садится в недействительный транспорт.
im/Y_Less (https://github.com/Y-Less/)
AllowTeleport
В версии 0.3dRC9 были удалены "AllowPlayerTeleport" и "AllowAdminTeleport" в пользу "OnPlayerClickMap". Некоторые скрипты используют эти функции.
Y_Less (https://github.com/Y-Less/)
SetPlayerSpecialAction
Удаление джетпаков у игроков изменением их special action на 0 продолжает воспроизводить звук пока они не умрут.
MP2
OnDialogResponse
Читеры могут подменить ID диалога и отправить ответ на не тот диалог, который они видят в настоящее время.
Y_Less (https://github.com/Y-Less/)
0.3e RC6
GetPlayerDialog (Отключено)
Эта функция не существует.
Y_Less (https://github.com/Y-Less/)/simonepri (https://github.com/simonepri/)
PlayerDialogResponse
Диалог игрока не скрывается при перезагрузке сервера, что заставляет сервер сообщать "Warning: PlayerDialogResponse PlayerId: 0 dialog ID doesn't match last sent dialog ID".
simonepri (https://github.com/simonepri/)
SetSpawnInfo
Кикает игрока если "SpawnPlayer" была вызвана до "SetSpawnInfo".
Y_Less (https://github.com/Y-Less/)
SetPlayerSkin
Скидывает с сиденья на байках.
CyNiC
Link (http://forum.sa-mp.com/showpost.pawn?p=1756094)
HideMenuForPlayer
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1787297)
valstr
Падает при больших числах.
Slice (https://github.com/oscar-broman/)
fclose (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fwrite (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fread (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fputchar (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fgetchar (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fblockwrite (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fblockread (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
fseek (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
flength (Отключено)
Падает при недействительном дескрипторе.
Slice (https://github.com/oscar-broman/)
file_inc (Отключено)
Включает или выключает все исправления для файлов вместе (может вызвать серьёзные накладные расходы).
Y_Less (https://github.com/Y-Less/)
IsPlayerAttachedObjectSlotUsed
Не работает в OnPlayerDisconnect.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1794167)
SetPlayerAttachedObject
Не удаляются объекты при выключении режима.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1794167)
OnPlayerDeath
Клиент зависает если он умирает с применённой анимацией.
h02
Link (http://forum.sa-mp.com/showpost.pawn?p=1641144)
strins
Игнорирует параметр "maxlength", возможны падения.
Slice (https://github.com/oscar-broman/)
IsPlayerConnected
Использует только два нижних байта переданного ID.
Slice (https://github.com/oscar-broman/)
OnPlayerCommandText
ZCMD может упасть при передаче пустой строки.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1909511)
TrainExit
При выходе из поезда, перемещённого с помощью "PutPlayerInVehicle", камера не сбрасывается должным образом.
Terminator3/Y_Less (https://github.com/Y-Less/)
Kick
Вызов "Kick" в "OnPlayerConnect" не работает должным образом.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1989453)
0.3x
OnVehicleMod
Крэшит других игроков при применении недействительного компонента.
JernejL (https://github.com/JernejL/)/Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1671500)
random (Отключено)
Не работает с отрицательными значениями.
simonepri (https://github.com/simonepri/)
sleep
Утечка байтов из стека.
Y_Less (https://github.com/Y-Less/)
AddMenuItem
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
SetMenuColumnHeader
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
ShowMenuForPlayer
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
HideMenuForPlayer
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1787297)
HideMenuForPlayer_2 (Отключено)
Игнорирует параметр "menuid".
Y_Less (https://github.com/Y-Less/)
DisableMenu
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
DisableMenuRow
Падает при передаче недействительного ID меню.
Y_Less (https://github.com/Y-Less/)
Menus
Все исправления для функций меню.
Y_Less (https://github.com/Y-Less/)
GetPlayerMenu
Возвращает предыдущее меню когда ничего не отображается.
Y_Less (https://github.com/Y-Less/)
GetPlayerInterior
Всегда возвращает 0 для NPC.
Y_Less (https://github.com/Y-Less/)/simonepri (https://github.com/simonepri/)
ClearAnimations
Использование ClearAnimation в момент, когда игрок находится в транспорте, выбрасывает игрока из него.
simonepri (https://github.com/simonepri/)
ClearAnimations_2
Если ApplyAnimation была вызвана со значением 1 для параметра freeze, ClearAnimations не делает ничего когда анимация заканчивается.
simonepri (https://github.com/simonepri/)
KEY_CROUCH
При нажатии KEY_CROUCH на месте пассажира вы начинаете целиться; если вы повторно нажмёте KEY_CROUCH игрок не возвращается в транспорт.
simonepri (https://github.com/simonepri/)
GangZoneCreate
Ошибка зон банд на главной карте для игроков, расположенных под определёнными углами по отношению к ним.
simonepri (https://github.com/simonepri/)/Y_Less (https://github.com/Y-Less/)
SPECIAL_ACTION_PISSING
Задефайнить это.
simonepri (https://github.com/simonepri/)
IsValidVehicle
"IsValidVehicle" не определена по умолчанию.
simonepri (https://github.com/simonepri/)
ApplyAnimation
Передача недействительной библиотеки анимации в ApplyAnimation вызывает падение клиента для игроков в зоне стрима.
simonepri (https://github.com/simonepri/)
ApplyAnimation_2
Когда ApplyAnimation вызывается первый раз после появления игрока, она не работает.
simonepri (https://github.com/simonepri/)
OnPlayerSpawn
San Andreas забирает $100 у игроков.
Y_Less (https://github.com/Y-Less/)
GetGravity
"GetGravity" не определена по умолчанию.
Whitetiger (https://github.com/Whitetigerswt/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1706447)
gpci
"gpci" не определена по умолчанию.
simonepri (https://github.com/simonepri/)
Link (http://pastebin.com/VQSGpbSm)
Natives
Несколько функций включено по умолчанию, это включает или отключает их все.
Y_Less (https://github.com/Y-Less/)
OnPlayerConnect
Эта функция не вызывается для игроков при включении фильтрскрипта.
Y_Less (https://github.com/Y-Less/)
OnPlayerDisconnect
Эта функция не вызывается для игроков при включении фильтрскрипта.
Y_Less (https://github.com/Y-Less/)
GameText
Некоторые стили не отображаются при указанном времени.
Y_Less (https://github.com/Y-Less/)
GameTextStyles
San Andreas имеет фиксированные стили для зон и имён транспорта, но они не включены в список стилей GameText.
Y_Less (https://github.com/Y-Less/)
HideGameText
Там нет функции "HideGameTextForXYZ".
Y_Less (https://github.com/Y-Less/)
BODYPARTS
Части тела, используемые в OnPlayer(Take/Give)Damage, не определены по умолчанию.
Whitetiger (https://github.com/Whitetigerswt/)
CAMERAMODES
Режимы камеры, используемые в GetPlayerCameraMode, не определены по умолчанию.
Whitetiger (https://github.com/Whitetigerswt/)
Link (http://forum.sa-mp.com/showpost.pawn?p=1309730)
SetPlayerCamera
Функции камеры, вызванные сразу после включения режима слежения, не работают.
Emmet_ (https://github.com/emmet-jones/)
SetPlayerTime
Использование этой функции в "OnPlayerConnect" не работает.
Emmet_ (https://github.com/emmet-jones/)
OnPlayerRequestClass
При выборе класса иногда появляются случайные дубины и бутылки.
Y_Less (https://github.com/Y-Less/)
SetPlayerColor
При использовании в OnPlayerConnect, затрагивающий игрок не увидит цвет в меню TAB.
Emmet_ (https://github.com/emmet-jones/)
Link (http://forum.sa-mp.com/showthread.pawn?t=452407)
FileMaths
Вы можете написать тарабарщину вида "File:a; ++a;".
Y_Less (https://github.com/Y-Less/)
GetPlayerWeaponData
Оружие, в котором закончились патроны, по-прежнему возвращается.
Y_Less (https://github.com/Y-Less/)
Link (http://forum.sa-mp.com/showthread.pawn?t=567400)
strcmp
Возвращает 0 если одна из строк пустая.
Y_Less (https://github.com/Y-Less/)
GetPVarString
Возвращает неправильный код символа для символов с кодом 128 и выше.
ziggi (https://github.com/ziggi/)/Mutha_X/Daniel_Cortez (https://github.com/Daniel-Cortez)
Link (http://forum.sa-mp.com/showthread.pawn?t=572724&page=11)/Link (http://pro-pawn.ru/showthread.pawn?13007)
GetSVarString
Возвращает неправильный код символа для символов с кодом 128 и выше.
ziggi (https://github.com/ziggi/)/Mutha_X/Daniel_Cortez (https://github.com/Daniel-Cortez)
Link (http://forum.sa-mp.com/showthread.pawn?t=572724&page=11)/Link (http://pro-pawn.ru/showthread.pawn?13007)
toupper
Не работает на Linux для символов с кодом 128 и выше.
ziggi (https://github.com/ziggi/)
Link (http://pro-pawn.ru/showthread.pawn?13466&p=72954#post72954)
tolower
Не работает на Linux для символов с кодом 128 и выше.
ziggi (https://github.com/ziggi/)
Link (http://pro-pawn.ru/showthread.pawn?13466&p=72954#post72954)
Настройки
Есть несколько настроек для улучшения работы этого скрипта. Задевайните эти символы как "1", прежде чем подключить fixes.inc (удалите или установите их в 0, чтобы отключить их):
FIXES_Single - У вас есть только один работающий скрипт (нет фильтрскриптов), упрощает код.
FIXES_SilentKick - Когда игрок кикается за запрещённые моды/транспорты, не отправлять им сообщение.
FIXES_Debug - Дополнительная информация в консоли сервера.
Некоторые исправления отключены по умолчанию, но вы можете их включить:
#define FIX_GetPlayerDialog 1 // Добавляет новую функцию, это не цель данного скрипта.
#define FIX_random 1 // Я не думаю, что не работающие отрицательные числа является ошибкой.
#define FIX_file_inc 1 // Это включает все "fwhatever" исправления (исправления для файлов).
#define FIX_HideMenuForPlayer_2 1 // Скрывать определённое меню, а не только текущее.
Дополнение
Файл достаточно хорошо документирован, со списком исправленных ошибок в верхней части. Если вы знаете о других ошибках, или у вас есть какие-либо решения для, было бы хорошо, если бы вы разместили их в этой теме (в соответствии с используемой структурой). Эту библиотеку также необходимо тщательное тестировать, чтобы найти ошибки в исправлениях.
Опять же, это общественный проект, если у кого есть комментарии, улучшения, критика и т.д. пожалуйста, напишите их в этой теме. Это включает в себя дополнения к исходному коду, документацию, переводы или любую другую информацию, из соответствующей области.
Другие исправления
Здесь представлено несколько других библиотек, нацеленых на исправление других серьёзных проблем:
Fixes2 (http://forum.sa-mp.com/showthread.pawn?t=571505) - Y_Less (https://github.com/Y-Less/) исправления "SetTimer", "SetTimerEx" и другие.
SQLitei (http://forum.sa-mp.com/showthread.pawn?t=303682) - Slice (https://github.com/oscar-broman/) исправления и улучшения многих SQLite функций
Timer Fix (http://forum.sa-mp.com/showthread.pawn?t=289675) - Slice (https://github.com/oscar-broman/) исправление, чтобы сделать "SetTimer" и "SetTimerEx" более точными.
Ошибки
Отправлено Y_Less (https://github.com/Y-Less/):
Это тестируемое программное обеспечение написанное небольшой командой в своё свободное время, возможно здесь есть ошибки (как и в любом программном обеспечении). Это программное обеспечение нацелено исправлять ошибки, не вызывать их, но здесь тоже могут быть ошибки.
Наиболее вероятной причиной ошибок является отключение некоторых исправлений. Некоторые исправления являются взаимозависимыми и они ДОЛЖНЫ работать даже тогда, когда связанные с ними исправления отключены, не каждая комбинация была протестирована. Есть буквально миллиарды возможных комбинаций - если вы найдёте ту, которая не компилируется или не работает, пожалуйста, сообщите нам.
По поводу перевода
Нормальных знаний английского у меня нет, переводил наспех, поэтому в тексте возможны ошибки. Об этих ошибках вы можете сообщить в этой теме.
Скачать
Последнюю версию вы всегда можете найти на GitHub (https://github.com/Open-GTO/sa-mp-fixes).