Sign in to follow this  
Followers 0
RASTAMAN

United Role Play (Доработка)

3 posts in this topic

United Role Play (Доработка)


Спойлер

- Переписал систему регистрации
- Поменял спавн + добавил информационный раздел
- Поменял политру проекта
- Переписал /alogin
- Исправил баг со спидометром
- Добавил покупку лодки и самолётов
- Переписал систему личных настроек
- Исправил баг с каптами
- Добавил панель для губернатора
- Перевел версию MYSQL до R-41
- Обновил стример
- Добавлена защита от ддос атак
- Был оптимизирован код [4.100 процентов]
- Добавлены новые команды для администраторов
- Теперь администратор может принимать/увольнять/повышать и понижать игроков
- Теперь администраторы могу изменить зарплату всем организациям
- Теперь администраторы могут смотреть раздел лидеров [ ники и снятие ]
- В MP теперь можно делать аудио стримы
- Теперь администраторы могут создавать объекты, выдавать всем рандомные обьекты на скин
- Для администраторов 6 уровня добавлена возможность сохранять аккаунты игроков
- Cоздал систему анти-слива лидерок, теперь все действия лидеров отслеживается прямо в игре + там есть ИП который если не будет совпадать будет красным чат админа,тоже самое для админов
- Исправлен баг с сохранением аккаунтов, бизнесов, домов                                                                                                  - Крупный баг с барбер шопом
- Был баг с вирт. мира игроки могли попадать в одну комнату и это бы мешало процессу, исправил, сделал что-бы они рандомно попадали в разные вирт. миры их 300 штук
- Был баг с авторедактором причёски, причёски ставились некорректно, теперь они работают на 60 процентов лучше, буду ещё дорабатывать]
- Небольшая оптимизация, скорость загрузки данных стала быстрее
- Исправлен баг со шкафом
- В донат разделе добавил пункт о проверке зачисления денег
- Теперь администраторы могут создавать объекты прямо в игре, важно знать что после рестарта они не пропадают, доступно [25 слотов]
- Теперь администраторы смогу создавать таблицы на МП и в другом любом месте [ доступно 20 слотов ]
- Для полиции были созданы места патрулирования,пока что действует только у полиции лос-сантоса но в скором времени у всех департаментов будет такая возможность
- Добавлены здания и интерьеры для патрульных мест как мини участок
- Переписал полностью систему GPS,обновил координаты, палитру и сортировал все места по разделам.
- Переписал систему доната ,теперь при большом пополнение на аккаунте игрок получит в подарок 10 процентов больше.
- Теперь игроки могу получать донат коды которые при вводе вы получите рандомную число валюты R-Money
их можно будет либо купить либо заполучить через конкурсы.
- Теперь любые действия администратора можно будет отслеживать без каких либо                                                         затруднений
Отслежка:
- Создание авто - пример [2013:01:25|20:10:26]Qwant_Marshall создал авто 522, цвет:0/1
- Активация кода - пример [2018:02:20|22:51:12]Qwant_Marshall использовал код на 100
- Свизи с продажей виртов я создал систему которая позволит быстро определить переводы и их суммы
- Кик лог
- Изминения уровня игрока
- Смена ников
- Назначение на админку
- ПайДай
- Ошибки
- Теперь если будут больше 5 наказаний в одну минуту то система забанит администратора до выяснений

- Изменил ракурс камеры при заходе
- Переписал систему /add [ исправлены и баги ]
- Переписал систему сбора бутылок
- исправлен крупный баг с рыбаловкой,после продажи рыбы игроку выдались деньги но после перезахода пропадалипри продаже рыбы не показывался кг рыбы у игрока,после перезахода пропадала удочка.
- Для администраторов была сделана панель читеров
Реагирует на:                                                                                                                                                                               - AirBreak (пешком/в авто)
- телепорт (пешком/в/к себе/между транспортом)
- телепорт пикапов
- FlyHack (пешком/в авто)
- SpeedHack (пешком/в авто)
- чит на здоровье (пешком/в авто) и броню
- чит на оружие/бесконечные/патроны
- чит на все спец. действия (в т.ч. и на jetpack)
- GodMode от пуль (пешком/в авто)
- Паркур мод
- Quick turn
- Rapid fire
- FakeSpawn
- FakeKill
- Pro Aim
-Бег CJ
-CarShot
-CarJack
-UnFreeze
Команды включения панельки /acheat | /offacheat
-Переписана система таксистов
Были изменены:
- Машины
- Зароботок по киллометру.
- Переписана система развозчика топлива,теперь больше пикапов для загрузки горючего
- Были переписаны зарплаты дальнабойщиков,механиков и развозчиков.                                                                            Переписал систему автосохранения,при выключение сервера не сохранялись действия игрока,пофиксил запросы и оптимизировал код

 


  • Добавил
  • Добавлено
    03.03.2018
  • Категория
  • Автор
    Skub

 

Share this post


Link to post
Share on other sites

Архив поврежден. Пожалуйста перезалейте.

Заметка от DEST , создано

Перезалил

Share this post


Link to post
Share on other sites

Привет всем,спасибо что указали хоть меня как автор дороботки,на самом деле дороботка слита на другом портале давно,я продолжил дороботку и кому нужно могу скинуть новую версию бесплатно.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Larikze1231
      By Larikze1231
      Здраствуйте, помогите решить проблему, убрал логотип аризоны но появился красный квадрат в низу, как убрать его? буду очень благодарен если поможете!
    • Maxim638
      By Maxim638
      Привет, кто играет в самп поймет, что за команда мне нужна, но поясню для тех, кто не знает. Речь идет о команде, которую могут использовать полицейские: вести преступника за собой. 
    • Maxim638
      By Maxim638
      Всех приветствую, кто зашел сюда. Мне нужна помощь, а именно ответ на вопрос: как сделать так, чтобы при смерти игрок появлялся не на спавне, а в больнице? Очень нужен ответ
    • good1luuck
      By good1luuck
      Всех вновь приветствую, столкнулся с такой проблемой... Что не сохраняется тюнинг на автомобиль, вроде всё написано правильно и по логике сохранение должно быть, но, его нет. Самое интересное, что в базу данных обновление столбца идёт. Так что с тюнингом, что с цветом автомобиля. Код прикреплю ниже, надеюсь на Вашу помощь.


      publics: LoginCallback
          cache_get_field_content(0,"one_tuneveh", maximum, connects, 74), sscanf(maximum, "p<,>a<i>[15]",cTune[playerid][0]);     cache_get_field_content(0,"two_tuneveh", maximum, connects, 74), sscanf(maximum, "p<,>a<i>[15]",cTune[playerid][1]);     cache_get_field_content(0,"one_vehcolor", maximum, connects, 11), sscanf(maximum, "p<,>a<i>[2]",cColor[playerid][0]);     cache_get_field_content(0,"two_vehcolor", maximum, connects, 11), sscanf(maximum, "p<,>a<i>[2]",cColor[playerid][1]); Стоки
      } stock SaveVehicleTuning(playerid, carnumber) {     new tunning[100];     format(tunning, sizeof(tunning), "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",     cTune[playerid][carnumber][0],cTune[playerid][carnumber][1],cTune[playerid][carnumber][2],     cTune[playerid][carnumber][3],cTune[playerid][carnumber][4],cTune[playerid][carnumber][5],     cTune[playerid][carnumber][6],cTune[playerid][carnumber][7],cTune[playerid][carnumber][8],     cTune[playerid][carnumber][9],cTune[playerid][carnumber][10],cTune[playerid][carnumber][11],     cTune[playerid][carnumber][12],cTune[playerid][carnumber][13],cTune[playerid][carnumber][13],     cTune[playerid][carnumber][14]);     if(carnumber == 0) format(stringer, sizeof(stringer), "UPDATE `"TABLE_ACCOUNT"` SET `one_tuneveh` = '%s' WHERE `pID` = '%d'",tunning,PlayerInfo[playerid][pID]);     else if(carnumber == 1) format(stringer, sizeof(stringer), "UPDATE `"TABLE_ACCOUNT"` SET `two_tuneveh` = '%s' WHERE `pID` = '%d'",tunning,PlayerInfo[playerid][pID]);     return mysql_function_query(connects, stringer, false, "", ""); } stock SaveVehicleColor(playerid, carnumber) {     new color[11];     format(color, sizeof(color), "%d,%d",cColor[playerid][carnumber][0],cColor[playerid][carnumber][1]);     if(!carnumber) format(stringer, sizeof(stringer), "UPDATE `"TABLE_ACCOUNT"` SET `one_vehcolor` = '%s' WHERE `pID` = '%d'",color,PlayerInfo[playerid][pID]);     else format(stringer, sizeof(stringer), "UPDATE `"TABLE_ACCOUNT"` SET `two_vehcolor` = '%s' WHERE `pID` = '%d'",color,PlayerInfo[playerid][pID]);     return mysql_function_query(connects, stringer, false, "", ""); Их использование (прикреплю полный код)
                  }         case 79:             {                 new playerd = GetPVarInt(playerid, "CarPlayer"), price = GetPVarInt(playerid, "CarPrice");                 if(SELL[0][playerd] == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_GREY, "Игрок, который продавал Вам машину вышел из игры.");                 if(response)                 {                     if(PlayerInfo[playerid][pCash] < price)                     {                         SendClientMessage(playerid, COLOR_GREY, "У вас не достаточно денег");                         format(stringer1, 100, "У %s недостаточно средств", PlayerInfo[playerid][pNames]);                         SendClientMessage(playerd,COLOR_WHITE,stringer1);                         DeletePVar(playerid, "CarPrice");                         DeletePVar(playerid, "CarPlayer");                         SELL[0][playerd] = INVALID_PLAYER_ID;                         return true;                     }                     if(listitem == 0)                     {                         if(GetPVarInt(playerd,"CarNomer") == 0) PlayerInfo[playerid][pCar] = PlayerInfo[playerd][pCar];                         else PlayerInfo[playerid][pCar] = PlayerInfo[playerd][pCar2];                         SetPVarInt(playerid, "CarNomer", 0);                     }                     else if(listitem == 1)                     {                         if(GetPVarInt(playerd,"CarNomer") == 0) PlayerInfo[playerid][pCar2] = PlayerInfo[playerd][pCar];                         else PlayerInfo[playerid][pCar2] = PlayerInfo[playerd][pCar2];                         SetPVarInt(playerid, "CarNomer", 1);                     }                     if(GetPVarInt(playerd,"CarNomer") == 0) PlayerInfo[playerd][pCar] = 462;                     else PlayerInfo[playerd][pCar2] = 462;                     cTune[playerid][GetPVarInt(playerid,"CarNomer")][0] = cTune[playerd][GetPVarInt(playerd,"CarNomer")][0];                     cColor[playerid][GetPVarInt(playerid,"CarNomer")][0] = cColor[playerd][GetPVarInt(playerd,"CarNomer")][0];                     cColor[playerid][GetPVarInt(playerid,"CarNomer")][1] = cColor[playerd][GetPVarInt(playerd,"CarNomer")][1];                     for(new i = 1; i <= 14; i++) cTune[playerid][GetPVarInt(playerid,"CarNomer")][i] = cTune[playerd][GetPVarInt(playerd,"CarNomer")][i];                     if(caridhouse[playerid] != INVALID_VEHICLE_ID) DestroyVehicleEx(caridhouse[playerid]);                     if(caridhouse[playerd] != INVALID_VEHICLE_ID) DestroyVehicleEx(caridhouse[playerd]);                     // ПОКУПАТЕЛЬ:                     if(GetPVarInt(playerid,"CarNomer") == 0) caridhouse[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar], 2531.9766,-1540.2168,2023.1902,90.0000, cColor[playerid][GetPVarInt(playerid,"CarNomer")][0], cColor[playerid][GetPVarInt(playerid,"CarNomer")][1], 7200, 0);                     else caridhouse[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar2], 2531.6418,-1546.1769,2023.1758,90.0000, cColor[playerid][GetPVarInt(playerid,"CarNomer")][0], cColor[playerid][GetPVarInt(playerid,"CarNomer")][1], 7200, 0);                     VEHICLE[caridhouse[playerid]][vHealth] = 1000.0;                     VEHICLE[caridhouse[playerid]][vLock] = 1;                     LinkVehicleToInterior(caridhouse[playerid], 1);                     SetVehicleVirtualWorld(caridhouse[playerid], PlayerInfo[playerid][pPhousekey]+50);                     Fuell[caridhouse[playerid]] = PlayerInfo[playerid][pFuelcar] + 20.0;                     AddTune(playerid, GetPVarInt(playerid,"CarNomer"));                     SaveVehicleTuning(playerid, GetPVarInt(playerid,"CarNomer"));                     // ПРОДАВЕЦ:                     caridhouse[playerd] = CreateVehicleEx(462, 2531.9766,-1540.2168,2023.1902,90.0000, cColor[playerd][GetPVarInt(playerd,"CarNomer")][0], cColor[playerd][GetPVarInt(playerd,"CarNomer")][0],7200, 0);                     VEHICLE[caridhouse[playerd]][vHealth] = 1000.0;                     VEHICLE[caridhouse[playerd]][vLock] = 1;                     LinkVehicleToInterior(caridhouse[playerd], 1);                     SetVehicleVirtualWorld(caridhouse[playerd], PlayerInfo[playerd][pPhousekey]+50);                     Fuell[caridhouse[playerd]] = PlayerInfo[playerd][pFuelcar] + 20.0;                     DeleteVehicleTune(playerd, GetPVarInt(playerd,"CarNomer"), 1);                     format(stringer1, 100, "Вы продали авто %s за %s вирт", PlayerInfo[playerid][pNames], formatInt(price));                     SendClientMessage(playerd,COLOR_LIGHTBLUE,stringer1);                     format(stringer1, 100, "%s продал вам авто за %s вирт", PlayerInfo[playerd][pNames], formatInt(price));                     SendClientMessage(playerid,COLOR_LIGHTBLUE,stringer1);                     GiveMoney(playerd, price);                     PlayerInfo[playerid][pCash] -= price;                 }                 else                 {                     format(stringer1, 100, "%s отклонил предложение о продаже", PlayerInfo[playerid][pNames]);                     SendClientMessage(playerd,COLOR_LIGHTBLUE,stringer1);                 }                 SELL[0][playerd] = INVALID_PLAYER_ID;                 DeletePVar(playerid, "CarPrice");                 DeletePVar(playerid, "CarPlayer");             }         case D_ATUNE:             {                 if(response)                 {                     switch(listitem)                     {                         case 0:                         {                             if(PlayerInfo[playerid][pProz] >= 100) return SendClientMessage(playerid, COLOR_SILVER, "Двигатель у вашего автомобиля в полном порядке."), ShowTuneDialog(playerid);                             new till = BizzInfo[TuneShop[playerid]][bTill] * 20;                             format(stringer1, sizeof(stringer1), "%d$", till*(100-PlayerInfo[playerid][pProz]));                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Engine");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], "Engine");                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             GetVehicleParamsEx(caridhouse[playerid], engine, light, alarm, doorss, bonnet, boot, objective);                             SetVehicleParamsEx(caridhouse[playerid], engine, light, alarm, doorss, true, boot, objective);                             ShowTuneMenu(playerid);                         }                         case 1:                         {                             if(cTune[playerid][GetPVarInt(playerid,"CarNomer")][0] != -1)                             {                                 ShowPlayerDialog(playerid, D_ATUNE+1, DIALOG_STYLE_MSGBOX, "Предупреждение", "На ваш автомобиль наклеен винил.\nПри покраске, он будет закрашен.\nВы действительно хотите продолжить?", "Да", "Нет");                             }                             else                             {                                 ShowPlayerDialog(playerid, D_ATUNE+2, DIALOG_STYLE_INPUT, "Покраска", "Введите основной и дополнительный цвет от 1 до 255 через пробел.\nПример: 14 28", "Выбрать", "Назад");                             }                         }                         case 2:                         {                             switch(GetVehicleModel(caridhouse[playerid]))                             {                                 case 560,562,575,565,561,559,558,534,567,536,535,576:                                 {                                     ShowPlayerDialog(playerid, D_ATUNE+3, DIALOG_STYLE_MSGBOX, "Предупреждение", "При добавлении винила, ваш старый цвет будет закрашен.\nВы действительно хотите продолжить?", "Да", "Нет");                                 }                                 default:                                 {                                     SendClientMessage(playerid, COLOR_SILVER, "Покрасочная работа недоступна для вашего автомобиля");                                     ShowTuneDialog(playerid);                                 }                             }                         }                         case 3:                         {                             AddVehicleComponent(caridhouse[playerid], Nitro[0][0]);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Nitro");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], Nitro[0][2]);                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * Nitro[0][1]);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             TextDrawShowForPlayer(playerid, TuneArrow[0]);                             TextDrawShowForPlayer(playerid, TuneArrow[1]);                             InterpolateCameraPos(playerid, 608.148681,1.742553, 1001.968444,618.342895,-3.137414,1003.073059, 1500);                             InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,615.096435,-0.434012,1000.407531, 1500);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                         case 4:                         {                             AddVehicleComponent(caridhouse[playerid], 1087);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Hydraulics");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], "Hydraulics");                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * 500);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                         case 5:                         {                             AddVehicleComponent(caridhouse[playerid], 1086);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Stereo");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], "Stereo");                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * 450);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             GetVehicleParamsEx(caridhouse[playerid], engine, light, alarm, doorss, bonnet, boot, objective);                             SetVehicleParamsEx(caridhouse[playerid], engine, light, alarm, doorss, bonnet, true, objective);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                         case 6:                         {                             new start = GetStartTypeTune(playerid, 6);                             ChangeTuneDetail[playerid] = start;                             AddVehicleComponent(caridhouse[playerid], Wheels[start][0]);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Wheels");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], Wheels[start][2]);                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * Wheels[start][1]);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             TextDrawShowForPlayer(playerid, TuneArrow[0]);                             TextDrawShowForPlayer(playerid, TuneArrow[1]);                             InterpolateCameraPos(playerid, 608.148681,1.742553,1001.968444,616.744934,-4.117499,1000.569702, 1500);                             InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,616.920288,0.855340,1000.079711, 1500);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                         case 7:                         {                             switch(GetVehicleModel(caridhouse[playerid]))                             {                                 case 439,420,426,492: return SendClientMessage(playerid, COLOR_SILVER, "К сожалению, выхлопные трубы недоступны для вашего автомобиля."), ShowTuneDialog(playerid);                             }                             new start = GetStartTypeTune(playerid, 7);                             ChangeTuneDetail[playerid] = start;                             AddVehicleComponent(caridhouse[playerid], Exhaust[start][0]);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Exhaust");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], Exhaust[start][2]);                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * Exhaust[start][1]);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             TextDrawShowForPlayer(playerid, TuneArrow[0]);                             TextDrawShowForPlayer(playerid, TuneArrow[1]);                             InterpolateCameraPos(playerid, 608.148681,1.742553,1001.968444,620.498657, -1.073193, 1000.572021, 1500);                             InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,615.501037, -1.088341, 1000.418518, 1500);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                         case 8:                         {                             new start = GetStartTypeTune(playerid, 8);                             ChangeTuneDetail[playerid] = start;                             new model = GetVehicleModel(caridhouse[playerid]);                             switch(model)                             {                                 case 560, 562, 565, 561, 559, 558, 534, 535:                                 {                                     TextDrawShowForPlayer(playerid, TuneArrow[0]);                                     TextDrawShowForPlayer(playerid, TuneArrow[1]);                                 }                                 case 439,491,517,518,540,546,549,550,585,603,401,496,547,542:                                 {                                     AddVehicleComponent(caridhouse[playerid], Vents[start][0]);                                     AddVehicleComponent(caridhouse[playerid], Vents[start][1]);                                     PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Vent");                                     PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], Vents[start][2]);                                     format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * 850);                                     PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                                     if(model != 401 && model != 496 && model != 547 && model != 542)                                     {                                         TextDrawShowForPlayer(playerid, TuneArrow[0]);                                         TextDrawShowForPlayer(playerid, TuneArrow[1]);                                     }                                     InterpolateCameraPos(playerid, 608.148681,1.742553, 1001.968444,610.482177, -1.161545, 1001.931335, 1500);                                     InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,614.982360, -1.216045, 999.752990, 1500);                                     if(PlayerInfo[playerid][pQuest5] == 0)                                     {                                         PlayerInfo[playerid][pQuest5] = 1;                                         UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                                     }                                     ShowTuneMenu(playerid);                                     TuneID[playerid] = listitem;                                     return true;                                 }                                 case 400,410,478,489,500,589,404,422,436,600,420,426,492,516,551,529: return SendClientMessage(playerid, COLOR_SILVER, "К сожалению, вентиляция недоступна для вашего автомобиля."), ShowTuneDialog(playerid);                             }                             AddVehicleComponent(caridhouse[playerid], Sideskirt[start][0]);                             AddVehicleComponent(caridhouse[playerid], Sideskirt[start][1]);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Side Skirts");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], Sideskirt[start][2]);                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * 650);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             InterpolateCameraPos(playerid, 608.148681,1.742553,1001.968444,615.281188,-5.337747,1001.366333, 1500);                             InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,615.096435,-0.434012,1000.407531, 1500);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                         case 9:                         {                             new start = GetStartTypeTune(playerid, 9);                             ChangeTuneDetail[playerid] = start;                             new model = GetVehicleModel(caridhouse[playerid]);                             switch(model)                             {                                 case 560, 562, 575, 565, 561, 559, 558, 426, 567, 536, 576:                                 {                                     TextDrawShowForPlayer(playerid, TuneArrow[0]);                                     TextDrawShowForPlayer(playerid, TuneArrow[1]);                                 }                                 case 400,410,478,489,500,589,404,422,436,600,401,439,518,585,540,546,603:                                 {                                     AddVehicleComponent(caridhouse[playerid], Lamps[start][0]);                                     PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Lamps");                                     PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], Lamps[start][2]);                                     format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * Lamps[start][1]);                                     PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                                     switch(model)                                     {                                         case 400,410,478,489,500,589:                                         {                                             TextDrawShowForPlayer(playerid, TuneArrow[0]);                                             TextDrawShowForPlayer(playerid, TuneArrow[1]);                                         }                                     }                                     if(PlayerInfo[playerid][pQuest5] == 0)                                     {                                         PlayerInfo[playerid][pQuest5] = 1;                                         UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                                     }                                     ShowTuneMenu(playerid);                                     TuneID[playerid] = listitem;                                     return true;                                 }                                 case 491,517,549,550,496,547,542,420,492,516,551,529: return SendClientMessage(playerid, COLOR_SILVER, "К сожалению, дополнительные фары недоступны для вашего автомобиля."), ShowTuneDialog(playerid);                             }                             AddVehicleComponent(caridhouse[playerid], FrontBumper[start][0]);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Front Bumper");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], FrontBumper[start][1]);                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * 400);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             InterpolateCameraPos(playerid, 608.148681,1.742553,1001.968444,609.310607,-1.098132,1001.088989, 1500);                             InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,614.270080,-1.076863,1000.454101, 1500);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                         case 10:                         {                             new start = GetStartTypeTune(playerid, 10);                             ChangeTuneDetail[playerid] = start;                             new model = GetVehicleModel(caridhouse[playerid]);                             switch(model)                             {                                 case 401,420,426,492,550,589,600,478,516,540,546,489,518,551,496,529,549:                                 {                                     AddVehicleComponent(caridhouse[playerid], Hood[start][0]);                                     PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Hood");                                     PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], Hood[start][1]);                                     format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * 990);                                     PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                                     if(model != 516 && model != 540 && model != 546 && model != 489 && model != 518 && model != 551 && model != 496)                                     {                                         TextDrawShowForPlayer(playerid, TuneArrow[0]);                                         TextDrawShowForPlayer(playerid, TuneArrow[1]);                                     }                                     InterpolateCameraPos(playerid, 608.148681,1.742553, 1001.968444,610.482177, -1.161545, 1001.931335, 1500);                                     InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,614.982360, -1.216045, 999.752990, 1500);                                     if(PlayerInfo[playerid][pQuest5] == 0)                                     {                                         PlayerInfo[playerid][pQuest5] = 1;                                         UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                                     }                                     ShowTuneMenu(playerid);                                     TuneID[playerid] = listitem;                                     return true;                                 }                                 case 535,439,491,517,585,603,547,542,400,410,500,404,422,436: return SendClientMessage(playerid, COLOR_SILVER, "К сожалению, капот недоступен для вашего автомобиля."), ShowTuneDialog(playerid);                             }                             AddVehicleComponent(caridhouse[playerid], RearBumper[start][0]);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Rear Bumper");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], RearBumper[start][1]);                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * 690);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             TextDrawShowForPlayer(playerid, TuneArrow[0]);                             TextDrawShowForPlayer(playerid, TuneArrow[1]);                             InterpolateCameraPos(playerid, 608.148681,1.742553,1001.968444,620.983703, -1.042761, 1000.860351, 1500);                             InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,615.987792, -1.221915, 1000.767822, 1500);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                         case 11:                         {                             new start = GetStartTypeTune(playerid, 11);                             ChangeTuneDetail[playerid] = start;                             AddVehicleComponent(caridhouse[playerid], Roof[start][0]);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Roof");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], Roof[start][1]);                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * 790);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             TextDrawShowForPlayer(playerid, TuneArrow[0]);                             TextDrawShowForPlayer(playerid, TuneArrow[1]);                             InterpolateCameraPos(playerid, 608.148681,1.742553,1001.968444,611.069030,-1.105961,1002.401916, 1500);                             InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,615.851745,-1.128729,1000.944213, 1500);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                         case 12:                         {                             new start = GetStartTypeTune(playerid, 12);                             ChangeTuneDetail[playerid] = start;                             AddVehicleComponent(caridhouse[playerid], Spoiler[start][0]);                             PlayerTextDrawSetString(playerid, TuneTypeShow[playerid], "Spoiler");                             PlayerTextDrawSetString(playerid, TuneComponentShow[playerid], Spoiler[start][1]);                             format(stringer1,sizeof(stringer1),"%d$",BizzInfo[TuneShop[playerid]][bTill] * 1000);                             PlayerTextDrawSetString(playerid, TuneCostShow[playerid], stringer1);                             TextDrawShowForPlayer(playerid, TuneArrow[0]);                             TextDrawShowForPlayer(playerid, TuneArrow[1]);                             InterpolateCameraPos(playerid, 608.148681,1.742553,1001.968444,620.206481,-1.130074,1001.853393, 1500);                             InterpolateCameraLookAt(playerid, 612.557067,-0.474712,1001.162170,615.385192,-1.050681,1000.530883, 1500);                             if(PlayerInfo[playerid][pQuest5] == 0)                             {                                 PlayerInfo[playerid][pQuest5] = 1;                                 UpdatePlayerData(playerid, "pQuest5", PlayerInfo[playerid][pQuest5]);                             }                             ShowTuneMenu(playerid);                         }                     }                     TuneID[playerid] = listitem;                 }                 else                 {                     if(caridhouse[playerid] == INVALID_VEHICLE_ID) return TuneID[playerid] = -1, SpawnPlayerEx(playerid);                     switch(TuneShop[playerid])                     {                         case 84:                         {                             SetVehicleEE(caridhouse[playerid], 944.4412,-1738.9734,13.1795);                             SetVehicleZAngleEx(caridhouse[playerid], 92.7119);                         }                         case 85:                         {                             SetVehicleEE(caridhouse[playerid], -1786.8325,1206.1458,24.8889);                             SetVehicleZAngleEx(caridhouse[playerid], 180.0444);                         }                         case 86:                         {                             SetVehicleEE(caridhouse[playerid], 1649.3677,2197.4707,10.5478);                             SetVehicleZAngleEx(caridhouse[playerid], 180.0778);                         }                     }                     SetCameraBehindPlayer(playerid);                     LinkVehicleToInterior(caridhouse[playerid], 0);                     SetVehicleVirtualWorld(caridhouse[playerid], 0);                     SetPlayerInteriorEx(playerid, 0);                     SetPlayerVirtualWorldEx(playerid, 0);                     TuneID[playerid] = -1;                     SaveBizz(TuneShop[playerid]);                     TuneShop[playerid] = 0;                     UpdateSpeedometr(playerid, 0);                     for(new i; i < 18; i++) PlayerTextDrawShow(playerid, td_speed[playerid][i]);                     SaveVehicleTuning(playerid, GetPVarInt(playerid,"CarNomer"));                 }  
    • good1luuck
      By good1luuck
      Добрый вечер, в общем...

      Сделал инвайт в фаму через 2 пвара, игрок отказался от Вашего предложения и игрок присоединился к Вашей семье. Но, даже при нажатии кнопки "отклонить" игрок всё равно принимается в семью, но пишет что отказался от предложения. Возможно вопрос банален и прост, но голову крутил как мог, не додумался до решения.


       
              case 26377:             {                        if(!response)                 {                     PlayerInfo[playerid][pFamily] = GetPVarInt(playerid,"invite_fam");                     DeletePVar(playerid,"invite_fam");                     SCM(playerid,COLOR_WHITE, "Вы отказались от предложения");                     SendClientMessage(GetPVarInt(playerid, "invite_fam"),-1,"Игрок отказался от Вашего предложения");                     return false;                 }                 else                 {                        PlayerInfo[playerid][pFamily] = GetPVarInt(playerid,"family_id");                     DeletePVar(playerid,"family_id");                     SCM(playerid,COLOR_WHITE, "Вы присоединились к семье");                     SendClientMessage(GetPVarInt(playerid, "family_id"),-1,"Игрок присоединился к Вашей семье");                     family_info [ PlayerInfo[playerid][pFamily] ] [ f_members_amount ] += 1;                     if(family_info[ PlayerInfo[playerid][pFamily] ][f_verified]) format(stringer1, 128, "© {%s}Семья: {FFFFFF}%s", family_chat_color [ family_info [ PlayerInfo[playerid][pFamily] ] [ f_prefix_color ] ], family_info[PlayerInfo[playerid][pFamily]][f_name]);                     else format(stringer1, 128, "{%s}Семья: {FFFFFF}%s", family_chat_color [ family_info [ PlayerInfo[playerid][pFamily] ] [ f_prefix_color ] ], family_info[PlayerInfo[playerid][pFamily]][f_name]);                     PlayerFamily[playerid] = CreateDynamic3DTextLabel(stringer1, 0xFFFFFFFF,  0.0, 0.0, 0.40, 20, playerid,-1, 0, -1, -1, -1);                     FPlayerText[playerid] = true;                 }                 return true;

       
      CMD:finvite(playerid, params[]) {     if(!PlayerInfo[playerid][pFamily])return SendClientMessage(playerid, COLOR_RED,"|{FFFFFF} Вы не состоите в семье");     if(strcmp(PlayerInfo[playerid][pNames], family_info [ PlayerInfo[playerid][pFamily] ] [ f_creator ], true) != 0) return SendClientMessage(playerid, -1,"[Ошибка] Управление семьей доступно только основателю семьи");     if( sscanf(params, "d", params [0])) return SendClientMessage(playerid, -1, "Ввведите: /finvite [id]" ) ;     if(!IsPlayerConnected(params[0]) || params[0] == playerid) return SendClientMessage(playerid, COLOR_WHITE, "Ошибка: Этого игрока нет, или вы указали свой ид");     if(PlayerInfo[params[0]][pFamily]) return SendClientMessage(playerid, -1, "Уже состоит в семье!" ) ;     if(!ProxDetectorS(15.0, playerid,params[0])) return SendClientMessage(playerid,COLOR_GREY,"Игрок далеко от вас.");     format(stringer1,sizeof(stringer1),"Вы пригласили %s присоединиться к семье %s",PlayerInfo[params[0]][pNames],family_info [ PlayerInfo[playerid][pFamily] ] [ f_name ]);     SendClientMessage(playerid,-1,stringer1);     format(stringer1,sizeof(stringer1),"{FFFFFF}\t%s предложил Вам присоединиться к семье %s\nНажмите соответствующую кнопку, чтобы принять или отклонить",PlayerInfo[playerid][pNames],family_info [ PlayerInfo[playerid][pFamily] ] [ f_name ]);     ShowPlayerDialog(params [ 0 ],26377,DIALOG_STYLE_MSGBOX,"Приглашение в семью",stringer1,"Принять","Отклонить");     SetPVarInt(params [ 0 ],"family_id",PlayerInfo[playerid][pFamily]);     SetPVarInt(params [ 0 ],"invite_fam",PlayerInfo[playerid][pFamily]);     return 1;