Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 8 из 8
  1. #1
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±

    Подсчёт через floatround

    Решил склепать так чтобы заправлялось авто на заправках и можно было контролировать залитые литры в бак, но почему то пишет что не достаточно денег и много цифр выводит, хотя цена в разы меньше если раскомментировать участок кода то будет заправять больше чем надо и денег снимать в раз 5 больше чем подсчитанная цена, вообщем я вошел в тупит, в обычной команде без диалогов подсчёт через такую формулу пашет, а вот в диалог засунул и что то не так, помогите

    Команда
      Открыть/закрыть
    PHP код:
        if(strcmp(cmdtext"/fill"true) == 0)
        {
            if(!
    IsPlayerConnected(playerid)) return SendClientMessage(playerid,COLOR_GREY,"Не авторизован!");
            for(new 
    0sizeof(SBizzInfo); b++)
            {
                if(
    PlayerToPoint(10.0playeridSBizzInfo[b][sEntranceX], SBizzInfo[b][sEntranceY], SBizzInfo[b][sEntranceZ]))
                {
                    if(
    SBizzInfo[b][sLocked] == 1) return SendClientMessage(playerid,COLOR_GREY,"Заправка не робит.");
                    new 
    vehicleid GetPlayerVehicleID(playerid);
                    if(
    Fuell[vehicleid] > 99) return SendClientMessage(playerid,COLOR_GREY,"Ваш бензобак и так полон.");
                    
    SPD(playerid,5378,DIALOG_STYLE_INPUT,"Заправить","Сколько литров?","Залить","Нет");

                }
            }
            return 
    1;
        } 


    Диалог
      Открыть/закрыть
    PHP код:

            
    case 5378:
            {
                if(
    response)
                {
                    if(!
    IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_GREY,"Вы не в автомобиле!");
                    for(new 
    0sizeof(SBizzInfo); b++)
                    {
                        new 
    Vob strval(inputtext);
                        if(!
    strlen(inputtext))
                            return 
    SPD(playerid,5378,DIALOG_STYLE_INPUT,"Заправить","Сколько литров?","Залить","Нет");
                        if(
    Vob || Vob 100)
                        {
                            
    SendClientMessage(playeridCOLOR_GREY"Минимально - 1 л, максимально - 100 л!");
                            
    SPD(playerid,5378,DIALOG_STYLE_INPUT,"Заправить","Сколько литров?","Залить","Нет")
                            return 
    1;
                        }
                        new 
    vehicleid GetPlayerVehicleID(playerid);
                        new 
    Float:benz 100.0 Fuell[vehicleid];
                        
    /*if(Vob > floatround(benz))
                        {
                            SendClientMessage(playerid, COLOR_GREY, "Вы пытаетесь залить больше чем вместится в ваш бак(Max V = 100 л!)");
                            SPD(playerid,5378,DIALOG_STYLE_INPUT,"Заправить","Сколько литров?","Залить","Нет")
                            return 1;
                        }*/
                        
    new cenabenz SBizzInfo[b][sPrice]*floatround(benz);
                        if(
    PlayerInfo[playerid][pCash] < cenabenz)
                            return 
    SendMes(playerid,COLOR_GREY,"Вам не хватает денюжек, стоимость %d вирт",cenabenz);
                        
    PlayerInfo[playerid][pCash] -= cenabenz;
                        
    SBizzInfo[b][sTill] += cenabenz;
                        
    SBizzInfo[b][sBenz] -= Vob;
                        
    Fuell[vehicleid] += Vob;
                        
    SendMes(playerid,COLOR_GREY,"Вы залили %d литров бензина за %d вирт.",Vob,cenabenz);
                    }
                }
            } 
    Последний раз редактировалось vovandolg; 10.01.2016 в 17:21.

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,441
    Репутация:
    261 ±
    Выложите код с нормальной кодировкой.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±
    Поправил шапку.

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,441
    Репутация:
    261 ±
    Выхлоп логов сюда:
    PHP код:
    case 5378:
    {
        if(
    response)
        {
            if(!
    IsPlayerInAnyVehicle(playerid)) 
              return 
    SendClientMessage(playerid,COLOR_GREY,"Вы не в автомобиле!");
            for(new 
    0sizeof(SBizzInfo); b++) // Зачем?!
            
    {
                
    printf("DEBUG | Вводимый текст = \"%s\""inputtext);
                new 
    Vob strval(inputtext);
                
    printf("DEBUG | Vob = %d"Vob);
                
    printf("DEBUG | Размер строки = %d"strlen(inputtext));
                if(!
    strlen(inputtext))
                    return 
    SPD(playerid,5378,DIALOG_STYLE_INPUT,"Заправить","Сколько литров?","Залить","Нет");
                if(
    Vob || Vob 100)
                {
                    print(
    #DEBUG | 1) Проверка выполняться);
                    
    SendClientMessage(playeridCOLOR_GREY"Минимально - 1 л, максимально - 100 л!");
                    
    SPD(playerid,5378,DIALOG_STYLE_INPUT,"Заправить","Сколько литров?","Залить","Нет")
                    return 
    1;
                }
                new 
    vehicleid GetPlayerVehicleID(playerid);
                
    printf("DEBUG | ID cars = %d"vehicleid);
                
    printf("DEBUG | Fuell[vehicleid] = %d"Fuell[vehicleid]);
                new 
    Float:benz 100.0 Fuell[vehicleid];
                
    printf("DEBUG | Переменная benz = %1.2f", , benz);
                
    printf("DEBUG | floatround(benz) = %d"floatround(benz))
                if(
    Vob floatround(benz))
                {
                    print(
    #DEBUG | 2) Проверка выполняться);
                    
    SendClientMessage(playeridCOLOR_GREY"Вы пытаетесь залить больше чем вместится в ваш бак(Max V = 100 л!)");
                    
    SPD(playerid,5378,DIALOG_STYLE_INPUT,"Заправить","Сколько литров?","Залить","Нет")
                    return 
    1;
                }
                new 
    cenabenz SBizzInfo[b][sPrice]*floatround(benz);
                
    printf("DEBUG | cenabenz = %d"cenabenz);
                static const 
    msg[] = "Вам не хватает денюжек, стоимость %d вирт";
                new 
    str[sizeof(msg) - 1];
                
    format(strsizeof(str), msgcenabenz);
                if(
    PlayerInfo[playerid][pCash] < cenabenz)
                    return 
    SendClientMessage(playeridCOLOR_GREYmsg);
                
    PlayerInfo[playerid][pCash] -= cenabenz;
                
    SBizzInfo[b][sTill] += cenabenz;
                
    SBizzInfo[b][sBenz] -= Vob;
                
    Fuell[vehicleid] += Vob;
                static const 
    msg1[] = "Вы залили %d литров бензина за %d вирт.";
                new 
    str1[sizeof(msg) - 1];
                
    format(str1sizeof(str1), msg1Vob,cenabenz);
                
    SendClientMessage(playeridCOLOR_GREYstr1);
            }
        }



    P.S: Выхлоп - в serverlog.txt, надеюсь Вы отсортируете логи от команды. Иначе, копайтесь в своих логах сами.
    Последний раз редактировалось $continue$; 10.01.2016 в 17:46.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±
    Дома буду посмотрим что логи покажут, а так то если попробовать объявить переменную допустим
    PHP код:
    new Vob2 floatround(benz);
    Или как правильнее
    new Float:Vob2 floatround(benz); 
    И засунуть её вместо всех floatround(benz) разница будет или так же всё?
    Последний раз редактировалось vovandolg; 10.01.2016 в 18:04.

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±
    Вот пару раз сделал заправку в 2ух авто:
      Открыть/закрыть
    PHP код:
    [00:47:41DEBUG Вводимый текст "1"
    [00:47:41DEBUG Vob 1
    [00:47:41DEBUG Размер строки 1
    [00:47:41DEBUG ID cars 235
    [00:47:41DEBUG Fuell[vehicleid] = 1111794642
    [00:47:41DEBUG Переменная benz 50.84
    [00:47:41DEBUG floatround(benz) = 51
    [00:47:41DEBUG cenabenz 255000
    [00:47:41DEBUG Вводимый текст "1"
    [00:47:41DEBUG Vob 1
    [00:47:41DEBUG Размер строки 1
    [00:47:41DEBUG ID cars 235
    [00:47:41DEBUG Fuell[vehicleid] = 1317310792
    [00:47:41DEBUG Переменная benz = -1112056704.00
    [00:47:41DEBUG floatround(benz) = -1112056704
    [00:47:41DEBUG 2 Проверка выполняться
    //////////
    [00:48:04DEBUG Вводимый текст "2"
    [00:48:04DEBUG Vob 2
    [00:48:04DEBUG Размер строки 1
    [00:48:04DEBUG ID cars 233
    [00:48:04DEBUG Fuell[vehicleid] = 1111647838
    [00:48:04DEBUG Переменная benz 51.40
    [00:48:04DEBUG floatround(benz) = 51
    [00:48:04DEBUG cenabenz 255000
    [00:48:04DEBUG Вводимый текст "2"
    [00:48:04DEBUG Vob 2
    [00:48:04DEBUG Размер строки 1
    [00:48:04DEBUG ID cars 233
    [00:48:04DEBUG Fuell[vehicleid] = 1317311693
    [00:48:04DEBUG Переменная benz = -1112172032.00
    [00:48:04DEBUG floatround(benz) = -1112172032
    [00:48:04DEBUG 2 Проверка выполняться 


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

    * с заправок бензин не снимается при такой заправке..

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,441
    Репутация:
    261 ±
    Покажите инициализацию массива - Fuell
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±
    PHP код:
    new Float:Fuell[MAX_VEHICLES
    - - - Добавлено - - -

    Вот именно через диалог такая туфта, а если делать через команду чисто без диалога то там всё корректно пашет.

 

 

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

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

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

Ваши права

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