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

    Статус
    Оффлайн
    Регистрация
    03.01.2017
    Сообщений
    11
    Репутация:
    0 ±

    Продажа авто игроку

    Ребят, суть бага получается: можно много раз наживать Y к примеру у играка будут списывать деньги, нажать один раз на Y, а потом на N, чтобы не флудить этой системой
    Скрин
    PHP код:
            else if(GetPVarInt(playerid"KeyCar") == 1)
              {
                  new 
    targetid GetPVarInt(playerid"CarPlayer"), price GetPVarInt(playerid"CarPrice");
                if(
    GetMoney(playerid) < price)
                {
                    
    SendMes(targetidCOLOR_LGREY"У игрока %s недостаточно средств"GetName(playerid));
                    
    DeletePVar(playerid"CarPrice");
                    
    DeletePVar(playerid"CarPlayer");
                    
    DeletePVar(playerid"KeyCar");
                    
    SendClientMessage(playeridCOLOR_LGREY"У вас не хватает денег");
                    return 
    1;
                }
                
    PI[playerid][cModel] = PI[targetid][cModel];
                
    PI[playerid][cClass] = PI[targetid][cClass];
                
    PI[playerid][cFuel] = PI[targetid][cFuel];
                
    PI[playerid][cColor][0] = PI[targetid][cColor][0];
                
    PI[playerid][cColor][1] = PI[targetid][cColor][1];
                
    PI[playerid][cCost] = PI[targetid][cCost];
                
    PI[playerid][cVehcom] = PI[targetid][cVehcom];
                
    sscanf(PI[playerid][cVehcom], "p<,>a<i>[14]",PI[targetid][cVehcoms]);
                
    PI[playerid][cPaintjob] = PI[targetid][cPaintjob];
                
    LoadMyCar(playerid);
                
    PI[targetid][cModel] = 0;
                
    PI[targetid][cClass] = 0;
                
    PI[targetid][cFuel] = 150;
                
    PI[targetid][cColor][0] = PI[playerid][cColor][1] = PI[playerid][cCost] = 0;
                
    format(PI[targetid][cVehcom],64,"0,0,0,0,0,0,0,0,0,0,0,0,0,0");
                
    sscanf(PI[targetid][cVehcom], "p<,>a<i>[14]"PI[playerid][cVehcoms]);
                
    PI[targetid][cPaintjob] = 3;
                foreach(new 
    iPlayer)
                   {
                    if(
    PI[i][pVehicleKey] == PI[targetid][PlayerCarID])
                    {
                        
    PI[i][pVehicleKey] = 0;
                    }
                }
                
    DestroyVehicle(PI[targetid][PlayerCarID]);
                
    LoadMyCar(targetid);
                
    PI[targetid][PlayerCarID] = INVALID_VEHICLE_ID;
                
    SendClientMessage(targetidCOLOR_GREEN"Поздравляем с продажей транспортного средства");
                
    SendClientMessage(playeridCOLOR_GREEN"Поздравляем с приобретением транспортного средства");
                
    PI[playerid][pRegVehicle] = 0;
                
    MysqlUpdatePlayerInt(playerid"veh_reg"PI[playerid][pRegVehicle]);
                
    strmid(PI[playerid][pNumberVehicle], "None"0strlen("None"), 20);
                
    MysqlUpdatePlayerStr(playerid"veh_number"PI[playerid][pNumberVehicle]);
                
    SaveAccount(playerid);
                
    SaveAccount(targetid);
                
    TransferMoney(playerid, -1price);
                
    TransferMoney(1targetidprice);
                new 
    string[128];
                
    format(stringsizeof(string), "Игрок %s купил транспорт %s[%i] за %d$ у игрока %s"GetName(playerid), VehicleNames[GetVehicleModel(PI[targetid][PlayerCarID])-400], GetPlayerVehicleID(targetid), priceGetName(targetid));
                
    SendLog("BuyCar"string);
                
    format(stringsizeof(string), "Игрок %s продал транспорт %s[%i] за %d$ игроку %s"GetName(targetid), VehicleNames[GetVehicleModel(PI[targetid][PlayerCarID])-400], GetPlayerVehicleID(targetid), priceGetName(playerid));
                
    SendLog("SellCar"string);
                
    DeletePVar(playerid"CarPrice");
                
    DeletePVar(playerid"CarPlayer");
                
    DeletePVar(playerid"KeyCar");
                   return 
    1;
              } 
    SendClientMessage(params[0], COLOR_WHITE, PlayerAccess); эта команда отвечает за Y и N, даже если я ее уберу, я всеровно могу нажимать на Y, чтобы согласиться с покупкой
    Последний раз редактировалось 19GameR98; 06.01.2017 в 02:19.

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

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от 19GameR98 Посмотреть сообщение
    Ребят, суть бага получается: можно много раз наживать Y к примеру у играка будут списывать деньги, нажать один раз на Y, а потом на N, чтобы не флудить этой системой

    SendClientMessage(params[0], COLOR_WHITE, PlayerAccess); эта команда отвечает за Y и N, даже если я ее уберу, я всеровно могу нажимать на Y, чтобы согласиться с покупкой
    SendClientMessage - это отправка сообщения игроку в чат. За нажатия кнопок отвечает паблик OnPlayerKeyStateChange.

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

    Статус
    Оффлайн
    Регистрация
    03.01.2017
    Сообщений
    11
    Репутация:
    0 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    SendClientMessage - это отправка сообщения игроку в чат. За нажатия кнопок отвечает паблик OnPlayerKeyStateChange.
    вот это оно и отвечает else if(GetPVarInt(playerid, "KeyCar") == 1)
    но, что тут не так ?
    вроде бы всё правильно

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

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от 19GameR98 Посмотреть сообщение
    вот это оно и отвечает else if(GetPVarInt(playerid, "KeyCar") == 1)
    но, что тут не так ?
    вроде бы всё правильно
    Что значит "вот это оно и отвечает else if(GetPVarInt(playerid, "KeyCar") == 1)" ? Я так понимаю этот кусок кода выполняется когда нажимается Y? Если так - проверяй просто на то - предлагал ли кто то купить машину или нет.

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

    Статус
    Оффлайн
    Регистрация
    03.01.2017
    Сообщений
    11
    Репутация:
    0 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    Что значит "вот это оно и отвечает else if(GetPVarInt(playerid, "KeyCar") == 1)" ? Я так понимаю этот кусок кода выполняется когда нажимается Y? Если так - проверяй просто на то - предлагал ли кто то купить машину или нет.
    DeletePVar(playerid, "KeyCar"); это функция отвечает за кнопку, но я уже где-то исправлял, убиирал, либо кнопка не работает либо без изменений(

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

    всё исправил, просто местами нужно было поменять)))

 

 

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

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

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

Ваши права

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