Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для Salik_Davince
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.02.2014
    Сообщений
    93
    Репутация:
    1 ±

    Проблема с проверкой анимации

    Здравствуйте, приступлю к делу, наверное многие знают что существует баг SA:MP'a с функцией RemoveObject (удалением объектов), в моем сервере при реконнекте игрока кикало, я поискал в офф.форуме решение, все таки нашел но в текстовом формате, решение было таковым: Подключается игрок - телепортируется в определенный участок где имеется стандартный объект (при первом заходе этот объект и удаляется), после всего проверяет игрока на анимацию плавания (2й коннект - объекта нету - плавает), думаю вы догнали суть фикса.

    Вот так я провожу данные проверки в OnPlayerConnect, вызываю таймер с 2300мс, после вызывается функция но узнать позицию/анимацию никак не получается, либо что то еще имеется?

    Устанавливаем позицию при коннекте
    1. set_pos(playerid, 258.18, 2938.75, 1.77, .angle = 0.0, .interior = 0, .world = 0);
    2. toggle_controlable(playerid, true);//Размораживаю из за того что в самой функции set_pos имеется фриз предзагрузки объектов


    Устанавливаем таймер
    1. SetTimerEx("CheckPlayerRemovedObjects", 2300, false, "d", playerid);


    Вызываем функцию по истечении времени
    1. function CheckPlayerRemovedObjects(playerid)
    2. {
    3. if(IsPlayerConnected(playerid))
    4. {
    5. new
    6. animLib[32],
    7. animName[32];
    8.  
    9. new
    10. Float: tempX,
    11. Float: tempY,
    12. Float: tempZ;
    13. GetPlayerPos(playerid, tempX, tempY, tempZ);
    14. printf("#Тест позиции %f %f %f", tempX, tempY, tempZ);
    15.  
    16. GetAnimationName(GetPlayerAnimationIndex(playerid), animLib, sizeof(animLib), animName, sizeof(animName));
    17.  
    18. printf("CheckPlayerRemovedObject = AnimLib = %s | AnimName = %s", animLib, animName);
    19.  
    20.  
    21. if(strcmp(animLib, "SWIM", false)) {
    22. //none;
    23. print("CheckPlayerRemovedObjects | Плавает");
    24. }
    25. else {
    26. print("CheckPlayerRemovedObjects | Не Плавает");
    27.  
    28. RemovePlayerObjects(playerid);
    29. }
    30. TogglePlayerSpectating(playerid, true);//Нужен для дальнейшего показа
    31.  
    32. new query_string[80 + MAX_PLAYER_NAME];
    33. format(query_string, sizeof query_string, "SELECT `u_id` FROM `users` WHERE `u_name` = '%s' LIMIT 1", Player[playerid][name]);
    34. mysql_tquery(sql_connection, query_string, "CheckPlayerRegistered", "i", playerid);
    35.  
    36. }
    37. return true;
    38. }


    https://ibb.co/71gsKTS - Сам объект (удаленный).


    Выводит в логах: Position: 0.000 0.000 0.000 | Анимация: пусто

  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Если я правильно вас понимаю, вы имели в виду баг не с RemoveObject, а с RemoveBuildingForPlayer, и игрока при этом не кикает, а крашит - это две совершенно разные вещи.
    Касаемо проблемы, вы скорее всего не заспавнили игрока перед перемещением; нет персонажа - нет и координат с анимацией.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. #3
    Аватар для Salik_Davince
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.02.2014
    Сообщений
    93
    Репутация:
    1 ±
    Да я так и хотел сказать но просто перепутал слова, извеняюсь. А на счет проблемы решил сделать проверку на первый спавн, создал переменную которая отвечает за это, лучше наглядно покажу :)

    OnPlayerConnect
    1. firstSpawn[playerid] = true;
    2. SpawnPlayer(playerid);


    OnPlayerSpawn

    1. if(firstSpawn[playerid])
    2. {
    3. firstSpawn[playerid] = false;
    4. set_pos(playerid, позиция);
    5. return true;
    6. }


    То появляется еще 1 проблема при дальнейшем спавне после авторизации игрок появляется в скине сиджея в том месте где телепортировали до проверки (думаю как то можно решить), 2я проблема - это то что до сих пор координаты нулевые и анимации нету.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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