Показано с 1 по 10 из 10

Тема: Реестр багов функций SA:MP

  1. #1
    Проверенный Аватар для georJik
    Регистрация
    07.07.2013
    Сообщений
    1,370
    Репутация: 427

    Звание: - очень-очень хороший человек

    Сообщение Реестр багов функций SA:MP

    Привет. Решил создать тему с известными багами SA:MP, занести в этот реестр баг может каждый, но об этом позже.

    Разделять баги будем на официальные и неофициальные, поможет нам в этом таблица.


    Функция Описание бага Решение Статус
    SpawnPlayer Убивает игрока и спавнит его с бутылкой пива по среди Grove Street, если игрок на момент спавна находился в машине
    Просто делать проверку находится ли игрок на момент спавна в авто Официально
    Не исправлено
    GetPlayerColor Возвращает 0 если использовалась функция SetPlayerColor http://wiki.sa-mp.com/wiki/ColorFix Официально
    Не исправлено
    RemovePlayerFromVehicle Нет синхронизации анимации выхода игрока из автомобиля с другими игроками - Официально
    Не исправлено
    SetPlayerSpecialAction Не работает в OnPlayerSpawn или OnPlayerStateChange при PLAYER_STATE_SPAWNED - Официально
    Не исправлено
    GetPlayerSpecialAction Не работает SPECIAL_ACTION_EXIT_VEHICLE - Официально
    Не исправлено
    SetPlayerCheckpoint 1. Если чекпоинт уже создан, то при создании нового будет использоваться размер созданного

    2. Если чекпоинт создается на пользовательском объекте, либо не на земле - он будет отображаться на земле, при этом нормально функционировать на заданных координатах
    1. Костыль через отключение чекпоинта
    2. -
    Официально
    Не исправлено
    SetPlayerRaceCheckpoint Для типов 0, 1, 2 - см. SetPlayerCheckpoint см. SetPlayerCheckpoint Официально
    Не исправлено
    SetPlayerWorldBounds Если нажать и удерживать кнопку прицеливания, то вполне спокойно можно ходить через заданные границы - Официально
    Не исправлено
    IsPlayerInCheckpoint Пока чекпоинт не создан - возвращает неопределенное значение - Официально
    Не исправлено
    IsPlayerInRaceCheckpoint см. IsPlayerInCheckpoint см. IsPlayerInCheckpoint Официально
    Не исправлено
    TogglePlayerSpectating Наблюдение прерывается если цель наблюдения выходит из зоны стрима наблюдателя, например телепорт в интерьер - Официально
    Не исправлено
    GetWeaponName Возвращает NULL для ID: 18, 44 и 45 - Официально
    Не исправлено
    DisableInteriorEnterExits Если произошла смена гейммода - входы не будут переназначены - Официально
    Не исправлено
    GetVehicleComponentInSlot 1. Не работает для CARMODTYPE_STEREO

    2. Компоненты кенгурятника и переднего бампера сохраняются в CARMODTYPE_FRONT_BUMPER. Если автомобиль имеет оба из них установлен, то эта функция будет возвращать только тот, который был установлен последним.
    - Официально
    Не исправлено
    AddVehicleComponent Использование недействительного ID компонента влечет за собой вылет Создать костыль который будет проверять компонент на существование, либо писать правильный ID Официально
    Не исправлено
    Kick, Ban, BanEx После обновления SA:MP 0.3x, любые действия, совершенные непосредственно перед киком игрока, например, отправка сообщения через SendClientMessage, не достигнет игрока Использовать таймер который задержит кик Официально
    Не исправлено
    IsPlayerConnected Функция читает только нижние 2 байта параметра playerid. Например для playerid = 65536, вернет 1
    PHP код:
    fix_IsPlayerConnected(playerid) return 
        (
    playerid 0xFFFF0000) ? : (IsPlayerConnected(playerid)); 
    Не официально
    Не исправлено
    PutPlayerInVehicle Если игрок уже сидел в другом транспортном средстве, то для остальных он там и останется, а другой автомобиль будет ездить "без водителя" Делать проверку, находится ли уже игрок в автомобиле Не официально
    Не исправлено
    TogglePlayerControllable Игроки видят замороженного игрока движущимся на месте, если тот нажимает клавиши управления http://forum.sa-mp.com/showpost.php?p=876854 Не официально
    Не исправлено
    SetVehicleZAngle Не сработает, либо работает криво, пока в автомобиле не побывал игрок - Не официально
    Не исправлено
    SetPlayerName 1. Изменение имени игрока на такое же, но с другим регистром (например, "John" на "JOHN") не работает
    2. При использовании в OnPlayerConnect, новое имя не будет отображено для подключившегося игрока
    3. Указание пустой строки в качестве нового имени приводит к падению сервера
    3.
    PHP код:
    setPlayerName(playerid, const string[])
        return (!
    string[0]) ? false : (SetPlayerName(playeridstring)); 
    Официально
    Не исправлено
    SetActorFacingAngle Актер получает новый угол поворота, но сразу он не синхронизируется Перемещение в другой виртуальный мир и обратно, либо пересоздание Не официально
    Не исправлено



    Если вы желаете добавить в реестр новый баг или его решение, пожалуйста соблюдайте форму заполнения:
    Код:
    1. Функция
    2. Описание бага
    3. Варианты решения
    4. Зарегистрирован ли баг официально, исправлен ли


    Тема безусловно будет дополняться.

  2. 13 пользователей сказали cпасибо georJik за это полезное сообщение:

    Amfy (20.08.2015), Disinterpreter (20.08.2015), DIz (20.08.2015), Dr.Deft (23.08.2015), Folleah (14.03.2016), Lampo7 (23.08.2015), Mexanizm (20.08.2015), PawnoKokolotov (21.08.2015), Privies (20.08.2015), Samurai (20.08.2015), Terner (23.08.2015), Джонни Ди (20.08.2015), Меша (20.08.2015)

  3. #2
    Джентльмен лжец Аватар для Fallen A.
    Регистрация
    03.09.2011
    Адрес
    Минск, БССР
    Возраст
    29
    Сообщений
    2,409
    Репутация: 337

    Звание: как роза среди колючек

    Re: Актуальные баги функций SA:MP

    1. Kick
    2. Происходит на несколько милисекунд раньше, чем положено
    3. Таймер.
    4. Хз

  4. 1 пользователь сказал cпасибо Fallen A. за это полезное сообщение:

    georJik (20.08.2015)

  5. #3
    ыыыыы Аватар для Mexanizm
    Регистрация
    16.01.2012
    Адрес
    Россия. Воронеж
    Возраст
    30
    Сообщений
    2,450
    Репутация: 287

    Звание: как роза среди колючек

    Re: Актуальные баги функций SA:MP

    1. SetPlayerName
    2. Если отправить функции пустую строку произойдёт падение сервера
    3. Проверять отправляемую строку
    4. Не знаю, не исправлен

    Про баг с бутылкой. Это наверное очевидно для всех но напишу
    1. SpawnPlayer
    2.
    Убивает игрока и спавнит его с бутылкой пива по среди Grove Street, если игрок на момент спавна находился в машине
    3. Костыль - проверить находиться ли игрок в авто. Если находиться, то выкинуть его функцией SetPlayerPos, и уже после этого SpawnPlayer.
    4. Не знаю, не исправлен
    Modern RP





  6. 1 пользователь сказал cпасибо Mexanizm за это полезное сообщение:

    georJik (20.08.2015)

  7. #4
    Ясно, понятно. Аватар для Jekazzz
    Регистрация
    08.01.2011
    Сообщений
    1,830
    Репутация: 188

    Звание: - весьма и весьма положительная личность

    Re: Актуальные баги функций SA:MP

    Баг со SpawnPlayer можно пофиксить телепортируя игрока на те же координаты, либо очищая его анимацию - в любом из вариантов его выкинет из авто.

    p.s а все, увидел, что уже есть пост с решением

    ________________ Сообщение добавлено в [10:38] ________ Предыдущее сообщение в [10:29] ________________

    1. IsPlayerConnected
    2. Функция читает только нижние 2 байта параметра playerid. Например для playerid = 65536, вернет 1
    3. Решение:
    PHP код:
    stock fix_IsPlayerConnected (playerid) {
        if(
    playerid 0xFFFF0000) return 0;
        return 
    IsPlayerConnected(playerid);

    4. Не знаю
    1. PutPlayerInVehicle
    2. Если игрок уже сидел в другом транспортном средстве, то для остальных он там и останется, а новая тачка будет ездить без водителя
    3. Аналогично SpawnPlayer
    4. Не известно
    А вообще все фиксы есть в инклюде fixes.inc

    Ссылка на Wiki

  8. 1 пользователь сказал cпасибо Jekazzz за это полезное сообщение:

    georJik (21.08.2015)

  9. #5
    CR:MP Аватар для Amfy
    Регистрация
    02.12.2011
    Адрес
    Казань
    Возраст
    27
    Сообщений
    2,143
    Репутация: 141

    Звание: скоро придёт к известности

    Re: Актуальные баги функций SA:MP

    1. SetVehicleZAngle
    2. Задается неверный угол поворота тс, если в нем нет игрока
    3. хз
    4. Не знаю, не исправлен

  10. 1 пользователь сказал cпасибо Amfy за это полезное сообщение:

    georJik (21.08.2015)

  11. #6
    Пользователь
    Регистрация
    07.06.2015
    Возраст
    29
    Сообщений
    8
    Репутация: 2

    Звание: пока не определено

    Re: Актуальные баги функций SA:MP

    1. SetActorFacingAngle
    2. Актер получает новый угол поворота но он не стримится
    3. Перемещение в другой виртуальный мир и обратно, либо пересоздание
    4. http://forum.sa-mp.com/showthread.php?t=584566

  12. 1 пользователь сказал cпасибо Michael451 за это полезное сообщение:

    georJik (23.08.2015)

  13. #7
    Проверенный Аватар для georJik
    Регистрация
    07.07.2013
    Сообщений
    1,370
    Репутация: 427

    Звание: - очень-очень хороший человек

    Re: Актуальные баги функций SA:MP

    Удален оффтоп, добавлены новые баги.

  14. #8
    Джентльмен лжец Аватар для Fallen A.
    Регистрация
    03.09.2011
    Адрес
    Минск, БССР
    Возраст
    29
    Сообщений
    2,409
    Репутация: 337

    Звание: как роза среди колючек

    Re: Актуальные баги функций SA:MP

    1. ApplyAnimation();
    2. Если вызывать функцию, не указав библиотеку и анимацию в ней либо по отдельности, оно крашит сервер сразу же.
    3. Не использовать таким образом, правильно будет ClearAnimations();
    4. Не исправлено.

    ________________ Сообщение добавлено 16.09.2015 в [00:05] ________ Предыдущее сообщение 15.09.2015 в [23:17] ________________

    1. ClearAnimations();
    2. Выкидывает игрока из автомобиля, если использовать в автомобиле.
    3. Не использовать в автомобиле.
    4. Не исправлено.

  15. 1 пользователь сказал cпасибо Fallen A. за это полезное сообщение:

    georJik (16.09.2015)

  16. #9
    Проверенный Аватар для e.kosovskij
    Регистрация
    09.07.2010
    Адрес
    Украина, Харьков
    Сообщений
    3,180
    Репутация: 308

    Звание: как роза среди колючек
    1. PlayerTextDrawDestroy
    2. После удаления player-текстдрава значение его переменной не присваивается INVALID_TEXT_DRAW, не 0? Из-за этого при перезаходе с использованием других player-текстдравов они просто путаются
    3.
    PHP код:
    При использовании функции PlayerTextDrawDestroy(playeridTD); ниже обнулятьто есть:
    TD PlayerTextINVALID_TEXT_DRAW
    4. Нет и нет


    PHP код:
    #include <a_samp>

    new PlayerTextPTD_TextDraw[MAX_PLAYERS][3];

    public 
    OnFilterScriptInit()
    {
        return 
    1;
    }

    public 
    OnFilterScriptExit()
    {
        return 
    1;
    }

    public 
    OnPlayerConnect(playerid)
    {
        
    PTD_TextDraw[playerid][0] = CreatePlayerTextDraw(playerid0.00.0"textdraw");
        
    PlayerTextDrawLetterSize(playeridPTD_TextDraw[playerid][0], 0.3592381.681666);
        
    PlayerTextDrawAlignment(playerid,PTD_TextDraw[playerid][0], 2);
        
    PlayerTextDrawColor(playeridPTD_TextDraw[playerid][0], -1);
        
    PlayerTextDrawSetShadow(0,PTD_TextDraw[playerid][0], 0);
        
    PlayerTextDrawSetOutline(playeridPTD_TextDraw[playerid][0], 0);
        
    PlayerTextDrawBackgroundColor(0,PTD_TextDraw[playerid][0], 255);
        
    PlayerTextDrawFont(playeridPTD_TextDraw[playerid][0], 2);
        
    PlayerTextDrawSetProportional(playeridPTD_TextDraw[playerid][0], 1);
        
    PlayerTextDrawSetShadow(playeridPTD_TextDraw[playerid][0], 0);
        
    PlayerTextDrawSetSelectable(playeridPTD_TextDraw[playerid][0], false);
        
    PlayerTextDrawShow(playeridPTD_TextDraw[playerid][0]);
        
    printf("Create[0]: %d"_:PTD_TextDraw[playerid][0]);

        
    PTD_TextDraw[playerid][1] = CreatePlayerTextDraw(playerid0.00.0"textdraw");
        
    PlayerTextDrawLetterSize(playeridPTD_TextDraw[playerid][1], 0.3592381.681666);
        
    PlayerTextDrawAlignment(0,PTD_TextDraw[playerid][1], 2);
        
    PlayerTextDrawColor(playeridPTD_TextDraw[playerid][1], -1);
        
    PlayerTextDrawSetShadow(0,PTD_TextDraw[playerid][1], 0);
        
    PlayerTextDrawSetOutline(playeridPTD_TextDraw[playerid][1], 0);
        
    PlayerTextDrawBackgroundColor(0,PTD_TextDraw[playerid][1], 255);
        
    PlayerTextDrawFont(playeridPTD_TextDraw[playerid][1], 2);
        
    PlayerTextDrawSetProportional(playeridPTD_TextDraw[playerid][1], 1);
        
    PlayerTextDrawSetShadow(playeridPTD_TextDraw[playerid][1], 0);
        
    PlayerTextDrawSetSelectable(playeridPTD_TextDraw[playerid][1], false);
        
    PlayerTextDrawShow(playeridPTD_TextDraw[playerid][1]);
        
    printf("Create[1]: %d"_:PTD_TextDraw[playerid][1]);

        
    PTD_TextDraw[playerid][2] = CreatePlayerTextDraw(playerid0.00.0"textdraw");
        
    PlayerTextDrawLetterSize(playeridPTD_TextDraw[playerid][2], 0.3592381.681666);
        
    PlayerTextDrawAlignment(0,PTD_TextDraw[playerid][2], 2);
        
    PlayerTextDrawColor(playeridPTD_TextDraw[playerid][2], -1);
        
    PlayerTextDrawSetShadow(0,PTD_TextDraw[playerid][2], 0);
        
    PlayerTextDrawSetOutline(playeridPTD_TextDraw[playerid][2], 0);
        
    PlayerTextDrawBackgroundColor(0,PTD_TextDraw[playerid][2], 255);
        
    PlayerTextDrawFont(playeridPTD_TextDraw[playerid][2], 2);
        
    PlayerTextDrawSetProportional(playeridPTD_TextDraw[playerid][2], 1);
        
    PlayerTextDrawSetShadow(playeridPTD_TextDraw[playerid][2], 0);
        
    PlayerTextDrawSetSelectable(playeridPTD_TextDraw[playerid][2], false);
        
    PlayerTextDrawShow(playeridPTD_TextDraw[playerid][2]);
        
    printf("Create[2]: %d"_:PTD_TextDraw[playerid][2]);

        
    SetTimerEx("@timer"20000"i"playerid);
        return 
    1;
    }

    @
    timer(playerid);
    @
    timer(playerid)
    {
        
    printf("Перед удалением[0]: %d"_:PTD_TextDraw[playerid][0]);
        
    PlayerTextDrawDestroy(playeridPTD_TextDraw[playerid][0]);
        
    printf("Перед удалением[1]: %d"_:PTD_TextDraw[playerid][1]);
        
    PlayerTextDrawDestroy(playeridPTD_TextDraw[playerid][1]);
        
    printf("Перед удалением[2]: %d"_:PTD_TextDraw[playerid][2]);
        
    PlayerTextDrawDestroy(playeridPTD_TextDraw[playerid][2]);
        
    SetTimerEx("@timer2"20000"i"playerid);
        return 
    1;
    }

    @
    timer2(playerid);
    @
    timer2(playerid)
    {
        
    printf("После: %d"_:PTD_TextDraw[playerid][0]);
        
    printf("После: %d"_:PTD_TextDraw[playerid][1]);
        
    printf("После: %d"_:PTD_TextDraw[playerid][2]);
        return 
    1;

    server_log:
    [16:34:57] Create[0]: 0
    [16:34:57] Create[1]: 1
    [16:34:57] Create[2]: 2
    [16:34:59] Перед удалением[0]: 0
    [16:34:59] Перед удалением[1]: 1
    [16:34:59] Перед удалением[2]: 2
    [16:35:01] После: 0
    [16:35:01] После: 1
    [16:35:01] После: 2

  17. #10
    Почетный пользователь LC Аватар для ziggi
    Регистрация
    15.07.2010
    Адрес
    St. Petersburg
    Возраст
    30
    Сообщений
    370
    Репутация: 151

    Звание: - весьма и весьма положительная личность
    Цитата Сообщение от e.kosovskij Посмотреть сообщение
    1. PlayerTextDrawDestroy
    2. После удаления player-текстдрава значение его переменной не присваивается INVALID_TEXT_DRAW, не 0? Из-за этого при перезаходе с использованием других player-текстдравов они просто путаются
    3.
    PHP код:
    При использовании функции PlayerTextDrawDestroy(playeridTD); ниже обнулятьто есть:
    TD PlayerTextINVALID_TEXT_DRAW
    4. Нет и нет


    PHP код:
    #include <a_samp>

    new PlayerTextPTD_TextDraw[MAX_PLAYERS][3];

    public 
    OnFilterScriptInit()
    {
        return 
    1;
    }

    public 
    OnFilterScriptExit()
    {
        return 
    1;
    }

    public 
    OnPlayerConnect(playerid)
    {
        
    PTD_TextDraw[playerid][0] = CreatePlayerTextDraw(playerid0.00.0"textdraw");
        
    PlayerTextDrawLetterSize(playeridPTD_TextDraw[playerid][0], 0.3592381.681666);
        
    PlayerTextDrawAlignment(playerid,PTD_TextDraw[playerid][0], 2);
        
    PlayerTextDrawColor(playeridPTD_TextDraw[playerid][0], -1);
        
    PlayerTextDrawSetShadow(0,PTD_TextDraw[playerid][0], 0);
        
    PlayerTextDrawSetOutline(playeridPTD_TextDraw[playerid][0], 0);
        
    PlayerTextDrawBackgroundColor(0,PTD_TextDraw[playerid][0], 255);
        
    PlayerTextDrawFont(playeridPTD_TextDraw[playerid][0], 2);
        
    PlayerTextDrawSetProportional(playeridPTD_TextDraw[playerid][0], 1);
        
    PlayerTextDrawSetShadow(playeridPTD_TextDraw[playerid][0], 0);
        
    PlayerTextDrawSetSelectable(playeridPTD_TextDraw[playerid][0], false);
        
    PlayerTextDrawShow(playeridPTD_TextDraw[playerid][0]);
        
    printf("Create[0]: %d"_:PTD_TextDraw[playerid][0]);

        
    PTD_TextDraw[playerid][1] = CreatePlayerTextDraw(playerid0.00.0"textdraw");
        
    PlayerTextDrawLetterSize(playeridPTD_TextDraw[playerid][1], 0.3592381.681666);
        
    PlayerTextDrawAlignment(0,PTD_TextDraw[playerid][1], 2);
        
    PlayerTextDrawColor(playeridPTD_TextDraw[playerid][1], -1);
        
    PlayerTextDrawSetShadow(0,PTD_TextDraw[playerid][1], 0);
        
    PlayerTextDrawSetOutline(playeridPTD_TextDraw[playerid][1], 0);
        
    PlayerTextDrawBackgroundColor(0,PTD_TextDraw[playerid][1], 255);
        
    PlayerTextDrawFont(playeridPTD_TextDraw[playerid][1], 2);
        
    PlayerTextDrawSetProportional(playeridPTD_TextDraw[playerid][1], 1);
        
    PlayerTextDrawSetShadow(playeridPTD_TextDraw[playerid][1], 0);
        
    PlayerTextDrawSetSelectable(playeridPTD_TextDraw[playerid][1], false);
        
    PlayerTextDrawShow(playeridPTD_TextDraw[playerid][1]);
        
    printf("Create[1]: %d"_:PTD_TextDraw[playerid][1]);

        
    PTD_TextDraw[playerid][2] = CreatePlayerTextDraw(playerid0.00.0"textdraw");
        
    PlayerTextDrawLetterSize(playeridPTD_TextDraw[playerid][2], 0.3592381.681666);
        
    PlayerTextDrawAlignment(0,PTD_TextDraw[playerid][2], 2);
        
    PlayerTextDrawColor(playeridPTD_TextDraw[playerid][2], -1);
        
    PlayerTextDrawSetShadow(0,PTD_TextDraw[playerid][2], 0);
        
    PlayerTextDrawSetOutline(playeridPTD_TextDraw[playerid][2], 0);
        
    PlayerTextDrawBackgroundColor(0,PTD_TextDraw[playerid][2], 255);
        
    PlayerTextDrawFont(playeridPTD_TextDraw[playerid][2], 2);
        
    PlayerTextDrawSetProportional(playeridPTD_TextDraw[playerid][2], 1);
        
    PlayerTextDrawSetShadow(playeridPTD_TextDraw[playerid][2], 0);
        
    PlayerTextDrawSetSelectable(playeridPTD_TextDraw[playerid][2], false);
        
    PlayerTextDrawShow(playeridPTD_TextDraw[playerid][2]);
        
    printf("Create[2]: %d"_:PTD_TextDraw[playerid][2]);

        
    SetTimerEx("@timer"20000"i"playerid);
        return 
    1;
    }

    @
    timer(playerid);
    @
    timer(playerid)
    {
        
    printf("Перед удалением[0]: %d"_:PTD_TextDraw[playerid][0]);
        
    PlayerTextDrawDestroy(playeridPTD_TextDraw[playerid][0]);
        
    printf("Перед удалением[1]: %d"_:PTD_TextDraw[playerid][1]);
        
    PlayerTextDrawDestroy(playeridPTD_TextDraw[playerid][1]);
        
    printf("Перед удалением[2]: %d"_:PTD_TextDraw[playerid][2]);
        
    PlayerTextDrawDestroy(playeridPTD_TextDraw[playerid][2]);
        
    SetTimerEx("@timer2"20000"i"playerid);
        return 
    1;
    }

    @
    timer2(playerid);
    @
    timer2(playerid)
    {
        
    printf("После: %d"_:PTD_TextDraw[playerid][0]);
        
    printf("После: %d"_:PTD_TextDraw[playerid][1]);
        
    printf("После: %d"_:PTD_TextDraw[playerid][2]);
        return 
    1;

    Точно такое же происходит с DestroyVehicle и другими функциями. И это не баг.
    P.S. Больше багов (и их исправления) можно найти здесь: https://github.com/ziggi/sa-mp-fixes (кидайте пулл реквесты, если есть чем дополнить)
    Блог: ziggi.org
    GitHub: github.com/ziggi
    Open-GTO Project: https://github.com/Open-GTO
    FCNPC (боты для SA-MP): https://github.com/Open-GTO/FCNPC

Похожие темы

  1. [BUG report] Актуальные баги форума
    от Games в разделе Предложения
    Ответов: 95
    Последнее сообщение: 09.02.2016, 22:54
  2. Пояснения значений функций.
    от DatelVydi в разделе Вопросы по скриптингу
    Ответов: 2
    Последнее сообщение: 21.07.2015, 10:10
  3. Медленный вызов функций
    от Cluck в разделе Вопросы по скриптингу
    Ответов: 3
    Последнее сообщение: 27.05.2015, 22:47
  4. Время срабатывания функций
    от nek7788 в разделе Вопросы по скриптингу
    Ответов: 2
    Последнее сообщение: 22.06.2014, 02:39
  5. [МАППИНГ] Актуальные карты)
    от Martin в разделе Беседка
    Ответов: 9
    Последнее сообщение: 10.01.2014, 11:51

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •