Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 17
  1. #1
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±

    Сборник моих вопросов (ч2)

    Доброго времени суток.
    1. Первая проблема у меня с анимацией, при ее проигрывании она видна только игроку, который использует ее.
    Пример: Когда игрок встает на чекпоинт ему проигрывается анимация, она видна только ему, а для остальных игроков он просто стоит на месте.
    Примечание: анимации предварительно подгружаются при коннекте игрока и срабатывают с первого раза, пробовал проигрывать несколько раз. Синхронизация в последнем аргументе установлена на "1".
    Анимация:
    PHP код:
    ApplyAnimation(playerid"BOMBER""BOM_PLANT"3.0000050001); 
    2. Не срабатывает проверка на float значение, а именно в том месте где нужно обнулить до 0.0, пробовал разные вариации кода и толку 0.
    Примечание: при создании автомобиля я даю 1.1 бензина и потом в ежесекундном таймере отнимаю по 0.01
    Код:
    PHP код:
                vehid GetPlayerVehicleID(i);
                
    printf("Сначала: %f"VehicleInfo[vehid][Fuel]);
                if(
    VehicleInfo[vehid][Engine] == VEHICLE_PARAMS_ON)
                {
                    if(
    VehicleInfo[vehid][Fuel] >= 1.0)
                    {
                        
    VehicleInfo[vehid][Fuel] -= 0.01;
                        
    printf("Вычитаем: %f"VehicleInfo[vehid][Fuel]);
                        if(
    _:VehicleInfo[vehid][Fuel] == _:0.99)
                        {
                            
    printf("В проверке: %f"VehicleInfo[vehid][Fuel]);
                            
    SCM(i, -1"В вашем авто закончилось топливо");
                            
    EngineStatus(vehidVEHICLE_PARAMS_OFF);
                            
    printf("В проверке2: %f"VehicleInfo[vehid][Fuel]);
                            
    UpdateEngineStatusForSpeedometr(ivehid);
                            
    VehicleInfo[vehid][Fuel] = 0.0;
                            
    printf("В проверке3: %f"VehicleInfo[vehid][Fuel]);
                        }
                    }
                }
                
    printf("После проверки: %f"VehicleInfo[vehid][Fuel]); 
    В логах сервера:
    PHP код:
    [13:51:05Сначала1.100000
    [13:51:05Вычитаем1.090000
    [13:51:05После проверки1.090000
    [13:51:06Сначала1.090000
    [13:51:06Вычитаем1.080000
    [13:51:06После проверки1.080000
    [13:51:07Сначала1.080000
    [13:51:07Вычитаем1.070000
    [13:51:07После проверки1.070000
    [13:51:08Сначала1.070000
    [13:51:08Вычитаем1.060000
    [13:51:08После проверки1.060000
    [13:51:09Сначала1.060000
    [13:51:09Вычитаем1.050000
    [13:51:09После проверки1.050000
    [13:51:10Сначала1.050000
    [13:51:10Вычитаем1.040000
    [13:51:10После проверки1.040000
    [13:51:11Сначала1.040000
    [13:51:11Вычитаем1.030000
    [13:51:11После проверки1.030000
    [13:51:12Сначала1.030000
    [13:51:12Вычитаем1.020000
    [13:51:12После проверки1.020000
    [13:51:13Сначала1.020000
    [13:51:13Вычитаем1.010000
    [13:51:13После проверки1.010000
    [13:51:14Сначала1.010000
    [13:51:14Вычитаем1.000000
    [13:51:14После проверки1.000000
    [13:51:15Сначала1.000000
    [13:51:15Вычитаем0.990000
    [13:51:15После проверки0.990000
    [13:51:16Сначала0.990000
    [13:51:16После проверки0.990000
    [13:51:17Сначала0.990000
    [13:51:17После проверки0.990000
    [13:51:18Сначала0.990000
    [13:51:18После проверки0.990000
    [13:51:19Сначала0.990000
    [13:51:19После проверки0.990000
    [13:51:20Сначала0.990000
    [13:51:20После проверки0.990000
    [13:51:21Сначала0.990000
    [13:51:21После проверки0.990000
    [13:51:22Сначала0.990000
    [13:51:22После проверки0.990000
    [13:51:23Сначала0.990000
    [13:51:23После проверки0.990000 
    3. Много видел постов о том, что плагин mysql обрабатывает все в отдельном потоке, но скрипт выполняется же в одном потоке?
    Можно ли использовать массив, например для форматирования sql запроса и сообщения для игрока в одной функции/блоке?
    Последний раз редактировалось Sp1ke; 12.08.2016 в 15:15.

  2. #2
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    С анимацией такая же трабла была, как то после изменений в инклуде не замечал сбоев каких либо или вот таких багов, вот в общем:
    PHP код:
    //a_players.inc
    //forcesync был равен 0, сделал 1
    native ApplyAnimation(playeridanimlib[], animname[], Float:fDeltalooplockxlockyfreezetimeforcesync 1); 
    - - - Добавлено - - -

    нужно обнулить до 0.0
    PHP код:
    if(VehicleInfo[vehid][Fuel] >= 1.0
    И как ты обнулить до 0.0 хочешь если у тебя проверка стоит когда бензин равен 1.0 или больше, то есть 0.9 будет или 0.99 а дальше не будет ливать твой бензинчик
    Возможно надо вот так:
    PHP код:
    if(VehicleInfo[vehid][Fuel] > 0.0
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

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

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    С анимацией такая же трабла была, как то после изменений в инклуде не замечал сбоев каких либо или вот таких багов, вот в общем:
    PHP код:
    //a_players.inc
    //forcesync был равен 0, сделал 1
    native ApplyAnimation(playeridanimlib[], animname[], Float:fDeltalooplockxlockyfreezetimeforcesync 1); 
    Я просто оставлю это здесь

    Forcesync - необязательный параметр, который по-умолчанию равен нулю.
    Последний раз редактировалось _lizard; 12.08.2016 в 20:24.

  4. #4
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от _lizard Посмотреть сообщение
    Я просто оставлю это здесь

    Forcesync - необязательный параметр, который по-умолчанию равен нулю.
    необязательный параметр если ты с ботами играть собрался
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    С анимацией такая же трабла была, как то после изменений в инклуде не замечал сбоев каких либо или вот таких багов, вот в общем:
    PHP код:
    //a_players.inc
    //forcesync был равен 0, сделал 1
    native ApplyAnimation(playeridanimlib[], animname[], Float:fDeltalooplockxlockyfreezetimeforcesync 1); 
    Изменять стандартные инклуды? Серьёзно? -_-
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. #6
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    С анимацией такая же трабла была, как то после изменений в инклуде не замечал сбоев каких либо или вот таких багов, вот в общем:
    PHP код:
    //a_players.inc
    //forcesync был равен 0, сделал 1
    native ApplyAnimation(playeridanimlib[], animname[], Float:fDeltalooplockxlockyfreezetimeforcesync 1); 
    - - - Добавлено - - -


    PHP код:
    if(VehicleInfo[vehid][Fuel] >= 1.0
    И как ты обнулить до 0.0 хочешь если у тебя проверка стоит когда бензин равен 1.0 или больше, то есть 0.9 будет или 0.99 а дальше не будет ливать твой бензинчик
    Возможно надо вот так:
    PHP код:
    if(VehicleInfo[vehid][Fuel] > 0.0
    Сложно понять логический смысл кода? Если fuel равна 1.0 или больше, то я отнимаю 0.01 и вот уже потом не срабатывает проверка на то, что если в машине 0.99 бензина то бензин должен обнулиться

  7. #7
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Так, а почему бы не так сделать?
    PHP код:
    if(VehicleInfo[vehid][Fuel] == 0.99
    Что вообще даёт этот префикс _:?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  8. #8
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Так, а почему бы не так сделать?
    PHP код:
    if(VehicleInfo[vehid][Fuel] == 0.99
    Что вообще даёт этот префикс _:?
    Так тоже не работает, я пробовал по разному.
    Прочитай эту тему: http://pro-pawn.ru/showthread.php?12323-floatcmp

  9. #9
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    А если так чисто для интереса влепить туда после девяток 4 нуля будет работать?

    - - - Добавлено - - -

    PHP код:
                vehid GetPlayerVehicleID(i);
                
    printf("Сначала: %f"VehicleInfo[vehid][Fuel]);
                if(
    VehicleInfo[vehid][Engine] == VEHICLE_PARAMS_ON)
                {
                    if(
    _:VehicleInfo[vehid][Fuel] >= _:1.0)
                    {
                        
    VehicleInfo[vehid][Fuel] -= 0.01;
                        
    printf("Вычитаем: %f"VehicleInfo[vehid][Fuel]);
                        if(
    _:VehicleInfo[vehid][Fuel] < _:1.0)
                        {
                            
    printf("В проверке: %f"VehicleInfo[vehid][Fuel]);
                            
    SCM(i, -1"В вашем авто закончилось топливо");
                            
    EngineStatus(vehidVEHICLE_PARAMS_OFF);
                            
    printf("В проверке2: %f"VehicleInfo[vehid][Fuel]);
                            
    UpdateEngineStatusForSpeedometr(ivehid);
                            
    VehicleInfo[vehid][Fuel] = 0.0;
                            
    printf("В проверке3: %f"VehicleInfo[vehid][Fuel]);
                        }
                    }
                }
                
    printf("После проверки: %f"VehicleInfo[vehid][Fuel]); 
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  10. Пользователь сказал cпасибо:
    Sp1ke (13.08.2016)
  11. #10
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    А если так чисто для интереса влепить туда после девяток 4 нуля будет работать?

    - - - Добавлено - - -

    PHP код:
                vehid GetPlayerVehicleID(i);
                
    printf("Сначала: %f"VehicleInfo[vehid][Fuel]);
                if(
    VehicleInfo[vehid][Engine] == VEHICLE_PARAMS_ON)
                {
                    if(
    _:VehicleInfo[vehid][Fuel] >= _:1.0)
                    {
                        
    VehicleInfo[vehid][Fuel] -= 0.01;
                        
    printf("Вычитаем: %f"VehicleInfo[vehid][Fuel]);
                        if(
    _:VehicleInfo[vehid][Fuel] < _:1.0)
                        {
                            
    printf("В проверке: %f"VehicleInfo[vehid][Fuel]);
                            
    SCM(i, -1"В вашем авто закончилось топливо");
                            
    EngineStatus(vehidVEHICLE_PARAMS_OFF);
                            
    printf("В проверке2: %f"VehicleInfo[vehid][Fuel]);
                            
    UpdateEngineStatusForSpeedometr(ivehid);
                            
    VehicleInfo[vehid][Fuel] = 0.0;
                            
    printf("В проверке3: %f"VehicleInfo[vehid][Fuel]);
                        }
                    }
                }
                
    printf("После проверки: %f"VehicleInfo[vehid][Fuel]); 
    1. Нет
    2. Работает, убрал префиксы _: так как в данном случае они ничем не помогут (статья DC)
    Вопрос все еще не решен, это баг или я ошибся в каком-то месте? Так же остались еще 2 вопроса

    - - - Добавлено - - -

    Примечание: анимация видна всем игрокам в первый раз ее использования, но не видна самому игроку, на котором она используется. Со второго раза наоборот

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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